Swapping colors, throwing in some padding, dropping in background images and getting all funky with border widths are are fine when working with tables, but the tag is fundamentally static and becomes little more than 1997-era HTML.
As just about everyone reading this is aware, the concept of user interfaces constructed from tables is being phased out in favor of semantic, CSS-based design where the markup is focused on content, not design. But the initial reason for the <table> tag’s creation has not disappeared—that of displaying proper tabular data in structured columns and rows.
But frankly, ye olde <table> is boring. Swapping colors, throwing in some padding, dropping in background images and getting all funky with border widths are good design practices, but the tag is fundamentally static and becomes little more than 1997-era HTML. That is, completely non-interactive.
From The Daily Kryogenix comes an excellent tutorial about custom sorting of tables. The example the author provides is perfect: a collection of employee info, set in a plain HTML table, that can be sorted by name, starting date, salary and more. This enables the data to live in ways the user intends, and is ideal for corporations seeking to display large amounts of fiscal information or employee contact info. This concept is also covered by Danny Goodman.