if you want to do this again, declare the html5 doctype and use a css reset to get the pixels lined up across browsers.
start here: http://html5boilerplate.com/
the issue with tables is semantic. tables can work as layout elements, but they are overkill and don't make sense from a search and accessibility pov. use tables for tabular data. you also can't regulate cellspacing as a css property (harder to reset tables across browsers). if you're going to be griping about semantics, you'd better make sure the rest of your structure is semantic.
that said, there's certain things which divs just don't do as simply as a table from a markup/rendering point of view: auto-expanding column heights, and replicating tab stops in text come to mind.