Let's say I'm a startup: then costs and ease-of-use (as I will likely not have in-house experts on XY or the money to buy in consulting hours). Privacy may be of some concern, but many start-ups honestly don't care that much. Vendor lock-in seems rather irrelevant to most startups, as they tend to exist for a limited time only and get sold or go bankrupt at some point. I have no system adminstrators or the desire to hire some, so I will probably use some PaaS solution.
If I'm a more established company, then data privacy, no vendor lock-in and reliability of the vendor will be of major concern. I forsee to operate my apps for years to come, and do not want to rely on e.g., Heroku still being around then. Furthermore, I am likely paranoid enough that I do not appreciate my valuable business data to hang around in e.g., Google's data centers. I will certainly not adapt any PaaS model, but maybe IaaS is attractive for me (I likely have some IT staff anyway, and the fact that IaaS will convert CapEx -> OpEx is likely attractive for me).
If I'm a global enterprise, there is no chance in hell that I will ever adopt a public cloud, so I am just continuing to use my own data centers, call them a private cloud now to satisfy my shareholders, and go on with my life.
It depends on the type of applications you need to run and mindset of the technical people in the organization. For example I prefer an open system instead of a framework type system. I am happy if provider just provide me an empty VM/Container and doesn't make rules regarding what should I do or How should I do. However some prefers to have a specialized solution where devs have to follow a rigid specific pathway to get application launched.