1) The company will lose control of their resources and will have to trust a 3rd party.
2) The 3rd party will not be as responsive to tech support issues as on premise IT guys.
3) The cloud goes down a lot.
4) What happens if your cloud vendor goes out of business?
5) Once you choose a cloud vendor, you're tied to it.
6) They won't customize their offerings to fit our special needs.
When I talk to developers about the cloud, they love it. When I ask them why they don't just stay on premise, they answer with these reasons:
1) Internal IT is too slow to respond to our needs.
2) Internal IT is too overworked to do what I ask them to do when I ask them to do it.
3) It's too expensive.
4) Internal IT tends to go down a lot, while the cloud stays up more often.
5) Internal IT knows that I'm a captive customer. Unless I have executive buy-in they will ignore me.
6) Internal IT won't customize their offerings to fit my specific needs.
I think the real reason why IT-Pro staff don't like the cloud is that they don't all want to end up working for Amazon, Microsoft, or Google. I think they realize that once all of the infrastructure is in the cloud, that's where their jobs will go. I think all of the other reasons are really minor compared to that central one.
I think developers love the cloud because they gain control over the resources where they felt they lose them when it goes on-prem. I also think C-levels love it because it's cheaper and more predictable.