For me, Chef is a no brainer for bootstrapping and managing my instances.
Heroku is also a no brainer, but as rapind pointed, it's for simpler setups or for getting an app up quickly without a lot of ceremony.
We've deployed to Heroku and eventually moved to EC2, but have kept several apps on Heroku.