In terms of upfront costs, cloud is always cheaper, initially. There's sort of a weird sweet spot for cloud. If you're to small it makes no sense operationally, if you're to large, it just way to expensive.
If you're leasing in a building and put your equipment in it, you're usually outsourcing at least some of the facility management duties. What if the AC fails? What if there's a leak? Who manages the building's power contracts? Who handles on-site security? Do they own the generator and its maintenance or do you?
If you're at a colo, you're outsourcing even more management of the actual datacenter work inside the building on top of the rest of the facility management. Who is managing access control? Are they providing network connectivity? Are they providing backup power?
When the colo we were at lost power due to employees not following procedure while doing a power failover test (didn't match the phase), I still got the "you need to do something!" talk. Other than being ready to validate everything came up properly, there was nothing I could really do in the end though. We didn't have the budget to operate at multiple facilities, this was just an accepted risk. What, was I going to go out, negotitate a new datacenter contract, haul all the gear, rack it all up, and get it all deployed in the half hour or so they spent to validate things and get power restored?
Even for large companies, if you have somewhat stable usage most of the year, but periodically have usage spikes, cloud providers still remain super beneficial.
That's the whole selling point of cloud. Spins up the resources when you need them. Spin them down when you don't. Cloud thrives off companies spinning up resources and never spinning them down, even when they don't need them anymore.