The wrapping algorithm is inaccurate (version 8.6), try this example:
set fixedFont {Courier -16 bold}
text .t1 -font $fixedFont -padx 4 -width 20 -height 7 -bg white -fg darkblue -wrap word
pack .t1 -side left
.t1 insert end "\nThis last line wraps around four "
.t1 insert end "times with a bit left on the last line."
text .t2 -font $fixedFont -padx 4 -width 20 -height 7 -bg white -fg darkred -wrap word
pack .t2 -side left
.t2 insert end "\nThis last line wraps\naround four "
.t2 insert end "times with a bit left on the last line."
This is the result:
The result in left text widget seems to be odd, it should wrap after "wraps" like on the right side (here a linebreak is used), and not before. The original wrapping algorithm wraps if at least one pixel at right border remains. This doesn't make sense, because the user cannot use this remaining pixel, he cannot position the cursor after this pixel, and this remaining pixel also has no visible effect, so the line wrapping should be done after the word "wraps". Moreover it is expected that up to 20 characters will fit into one line, because the width of this widget is set to 20. The revised implementation is producing the result on the right side.