I'm no expert in custom controls, but you could try this:
When you add your controls in CreateChildControls, also add the formatting controls.
Create an HtmlControls.HtmlTable control and the necessary instances of HtmlControls.HtmlTableRow and HtmlControls.HtmlTableCell. Add your labels and textboxes to the cells and the cells to the rows and rows to the table to form the tabular layout, then add the table to the main Controls collection.
I think the approach indended by the book is to do this:
write out a chunk of html to start (i.e. <table>....<td>)
render the first row label
write out the next html chunk (</td><td>)
render the first row textbox
and so on and so forth until you get to
write out the end html chunk (</td></tr></table>)
Personally, I think the first approach is better because you can let the control render itself using the built in html controls so it's significantly easier to write. But that might not be the preferred way of creating custom controls. As I said, I'm no expert.