Divs of some description.
Maybe as id'd divs in the html. This makes it possible to radically alter the layout without affecting functionality and allows designers to design and programmers to program. Even if the programmer is the designer, they can effect changes in the html and css without a recompile.
Using divs (even if you are just adding flowpanels to other flowpanels) makes layout easier.
Tables, as everyone knows, got a really bad press when used for layout (and VPs, HPs and DockPanels and the like are all table-based) and although there was a lot of rubbish talked, it is easier to get a semantically significant layout using divs (and that means text-readers - and search engines - can make more sense of it)
DockPanels are something else again - they tempt programmers away from better structured code IMNSHO, creating too many classes at the same level. Which is probably fine while you are playing about and learning, but makes maintenance in real-life applications a right bugger.
And most of these table-based panels *require* that you set heights and widths in the code unless you want all the TDs the same size. If you create three cells in a VP the only way to set the heights is in code - unless you shove other widgets in there and let them expand when you set the height of those widgets (but then if you decrease the size of the widgets, in some browsers the table won't shrink back).
There are other consideration due to the way GWT works which means that in large apps you might get significant performance hits if, say, you are creating a lot of nested widgets. Using a widget has some overheads and if you don't need to use a widget then it's probably a good practice not to use a widget. Even if you need to do stuff dynamically in code, you can use the HTMLPanel and shove divs in that.
A quick test showed that divs with ids in an HTMLPanel is 2.3 times faster than div elements with ids in another div element and 13 times faster than labels with ids in a verticalpanel. 10,000 took about 65ms, 150ms, and 850ms respectively (averaged over a number of tests). That was in Chrome. IE7 took between 35 and 40 seconds to put labels in a VP. Users start to notice delays like that.
There may be quicker ways of coding it though, I just knocked 3 examples together, but it probably gives a good idea.