There's a constant argument on whether companies should utilize private or public clouds to host their applications. Mostly we've just compromised and settled on hybrid cloud. Public cloud can be too expensive and people have questioned security in the public cloud. However, private cloud can be a lot to admin and isn't easy (read: cheap) to make it totally redundant. Many startups are very lean and it makes sense for them to start out in the public cloud.
However, companies like Uber, who started off pretty lean, but are now getting much larger are moving a lot of their applications to private data centers. Mostly they're siting cost as the reason for the move. It just becomes really expensive the more you end up hosting in the public cloud. Of course, there are exceptions to this rule, like Netflix, who hosts pretty much all of their tech in the public cloud...and it's hard to argue that Netflix isn't doing it right.