Horizontally align elements? Well, float usually suits my purposes for left or right-aligning objects, and you can use "margin: auto" (or "margin: 0 auto" or "margin-left: auto; margin-right: auto") to horizontally center elements (though I'm not sure what happens when you combine floats and this kind of margin setting. . .)
What does XHTML have against tables and frames? It's not XHTML, but end-users (because of browsers) actually. Tables are good, but they make a page take a long time to load, especially if you have a lot of images. Regarding frames, I have nothing against them personally, but they are bad for accessibility, such as screen readers. Also, many people use text browsers rather than graphical browsers, so the page looks odd because frames are not implemented in many text browsers.