Zeldman came out of nuts-and-bolts coding retirement a few days ago, on the topic of, IN DEFENSE OF DESCENDANT SELECTORS AND ID ELEMENTS. In his post, he takes issue with the self-perpetuating dogma involving the disuse of id due to its specificity. This type of smart, dialogue-beginning post is just what the interweb needs more of and good enough to win our Virtual Pint.
John Holland, our Senior Developer, agrees with your points, especially when it comes to band-width. He’d wants to throw in that, “One reason why we use classes in most of our CSS is because we develop in .NET and PHP. In .NET if you give an element an id and make it "runat=server", .NET changes the id within the html output to the browser so it’s no longer the name you gave it. In this case using classes in the CSS makes things much more portable when going back and forth between languages,” as well as, “When using jQuery to process elements on a page, again, processing classes is preferred to ids, since .NET will change the id if the element is "runat=server",”.