For most cases they're just fine and many people feel quite strongly about wanting a naked domain without an "extra" www subdomain.
So, DNS A records point to IP addresses. In the specific case of Heroku (and maybe other PAAS providers), tying your site to an IP address makes them less fault tolerant as they can't do things like shift your app between availability zones if one blows up or something.
I used to like the aesthetics of naked domains but after having dealt with DoS issues and integrating a CDN, I'd say it's better not to use one for future flexibility. Since you (mostly) cannot use a CNAME for a naked domain, things can get difficult in certain types of setup that you might want down the road.
Using your base domain name gives you less DNS flexibility - for example, you can't use a CNAME for your base domain name.
Given that it's fairly easy to put a www. (or whatever) redirect on whatever IP your basename does point at, your users don't have to worry about remembering to use it.
So, DNS A records point to IP addresses. In the specific case of Heroku (and maybe other PAAS providers), tying your site to an IP address makes them less fault tolerant as they can't do things like shift your app between availability zones if one blows up or something.