Then there're traffic spikes. Pretty hard to deploy to bare metal or EC2 instantly without building your own Heroku-like system.
Using something like Hudson/Jenkins can make deployments simple borderline trivial and EC2 supports ElasticBeanstalk which makes deployments a breeze.
Exactly.
Which is that much more I know about shipping working products which make my clients money.
Once you move past that, because your app is well structured you can easily deploy on your own hardware.
AWS is the electric company. Heroku tends to be the circuitry, outlets and light switches for your house. You may take it for granted because it looks so simple, but it's the simplicity that makes it great.
As PaaS providers begin to mature and turn attention to more worthy challenges (like geo-agnostic deployments, easier scaling, for example), then their value is only going to increase.