Heroku is a platform that takes care of all the "plumbing" for you, you do a `git push` and your application is instantly running on their servers. They take care of installing all their dependencies and you never have to worry about setting up firewalls, front-end proxies, web servers or anything like that. If you need more capacity you just move a slider and you're done.
With EC2/CE you're doing all the stuff I just described in the last paragraph by hand . It's cheaper and way more flexible but they usually require you to know how all that stuff works. By the way, Heroku runs on EC2, they just abstract all the nasty details for you.
PS: Google Compute Engine is on Limited Preview right now. If you're planning to offer a service that you care about you should consider this.
 In theory you can get AMIs that do install all of this for you but you'll usually end up SSHing into the machines and configuring everything to whatever you need.