I used hosts based blocking until AdBlock came along.
Procedure for blocking an annoying object with hosts: obtain URL for item, pray it isn't hosted on the same (sub)domain as something you don't want to block, add it to hosts, restart DNS, reload page
Procedure for blocking an annoying object with AdBlock or similar: right-click, block item, adjust filter if the preview shows other things blocked too
Hosts also fails completely at blocking somedomain/images/ads/annoying-blinking-banner.gif while allowing you to browse somedomain. Or completely blocking the the ads YouTube makes you watch before some videos. Or killing the random Facebook "like" buttons everywhere while still allowing you to view the main Facebook site. Or blocking the specific JavaScript file that makes the newest annoying "feature" added to Google work. Or blocking the obnoxious animated avatar/sig some random user on a forum has. --all of which AdBlock does easily.
There are some major perks you get from being further up the stack. Hosts just blocks whole (sub)domains. An HTTP proxy allows blocking based on URL and tweaking things within the page, but is easily defeated by JavaScript or Flash's idiotic habit of ignoring HTTP proxy settings. Browser extensions can see and edit the page *after* any JavaScript has done its thing, and mess with the Flash plugin more directly.