A records are name-to-IP, CNAME are name-to-name. When you control everything, you're right, no big deal. But in this case, customers control the DNS and Heroku the servers. Using CNAME to point to an A record at Heroku allows them to decide what IP the traffic goes to. If you use an A record, Heroku is SOL if they need the traffic to go to a new IP.
Posterous has a similar problem last august. They urgently needed to change to a new IP, but all their clients were setup with A-records. Painful.
Ok. So I'm correct in thinking that for my own domains that I manage it boils down to the same thing, e.g. there is no reason to prefer www CNAMEs over domain A records.
In other words, doesn't a short TTL get you essentially the same thing?