Short answer: VPS are (usually) cheaper, and you have total control.
Longer answer: There are basically two approaches to scaling software: Either you build/simulate better computers (vertical scaling), or you deploy more of them (horizontal scaling).
Dedicated hardware lets you build or simulate having a better computer (e.g. FPGAs, or using a network driver that is ideal for your traffic patterns, or a heavily tuned JVM). On the other hand, the cloud lets you quickly add (or remove) computers in response to service demand.
VPSs just split the difference (though they are usually closer to the vertical side of the equation).
Price for me. For less money, I get CPU, Disk and Network. On AWS, I can pay about the same price for the CPU part, but I still have to pay EBS and network traffic.
I've used every cloud/vps provider and I'll try to give you a short list (Linode, Aws, Azure, DO, StormonDemand, Newservers, GCE, Rackspace, Vultr, Atlantic, Terramark vCloud Express, CloudSigma, Bluebox, Bluelock, GoGrid, Phoenixnap, Tata) as well as many cloud SaaS services (DME, Rage4, EasyDNS, Boundary, NewRelic, Dyn, Akamai, Cloudflare, Incapsula, Pingdom, Pagerduty, etc.)
Why do I chose a provider like DO over AWS? Cost and simplicity. With AWS who knows what you will get billed for? However, when you combine services you can get a much better value proposition. DO is cheaper, as stable and you get better performance than AWS, combine that with a good dns provider (DME, Rage4) and a content delivery network (Fastly, MaxCDN) you have a much better/cheaper solution.