IaaS cloud is a money pit
Probably in ~75% of the situations out there. Maybe on prem is a money pit in ~25% of the situations out there.
Back in 2016, El reg reported on Snapchat's IPO filing where they admitted they were committed to $400M/year in google cloud spend over the next few years(the most extreme example I can think of), and I poked at their financials earlier today and they still seem to be losing upwards of $1B/year. Obviously an org that doesn't care about burning money.
Imagine what one could accomplish with $400M a year "on prem". Likely real on prem costs for them would be in the $50-70M/year range at the most?
Last company I was at was a "small" company (employee count wise), I moved them out of cloud in early 2012 when their cloud monthly bill was ~$70k/mo (and they had just launched about 4 months prior). Over the following decade they grew a lot, but never needed more than four cabinets. Company prior was even smaller, maybe 60 employees or less, and had a cloud bill at times over $400k/mo, they never moved out of cloud despite my efforts, I had everyone on board including the CEO and CTO but the board of directors wouldn't budge. Company is long since dead now.
IaaS is not for the faint of heart it requires real skills and experience to get going right, but even then you can fail (cost wise) as Basecamp has shown(most recently). Being an infrastructure person myself I realized this back in 2010. Perhaps the new normal of higher interest rates and no more "free money" will shift the tides heavily away from at least IaaS(I can hope anyway haha).
SaaS is a totally different beast of course, with a totally different cost model(for end customers), and in many cases if you want/need that software platform you may be stuck in using their model. I have seen time and again SaaS platforms launch over the years as an excuse to make poor (quality) software products that their customers couldn't otherwise hope to operate on their own. I'd like to think a small company I worked at more than 15 years ago was an early pioneer in that at the time (and we didn't even know it then). Company made a software/service for big telcos. At every major company meeting a common strategic goal for the company was to make their product so the customer could operate it themselves(that never happened while I was there). At one point it was my project to help demonstrate to the largest carrier in the U.S. that they could in fact host and operate our software on their gear. The customer agreed the demonstration was a success(took 1-2 months) and paid the company I worked for the $1M fee (or so I was told), but I could see the sheer horror in the eyes of their employees as they tried to understand how that super complicated software stack worked (by far the most complicated of any stack I've ever worked on, had two people on my team quit within their first few months because they felt they couldn't keep up, never seen that before/since). As far as I know they never took the software in house, always chose to operate it as a SaaS model from the company that made it, am guessing the usage of that software stack was mostly phased out a decade or more ago, as Google and Apple took over the markets it was targeted towards(though at least one of their applications is still online and shows the same name for copyright in the code as it did in 2005(except the date has been changed to 2002-2023, even though they got acquired in 2006, another one of their portals is online but branded with the company's name that acquired them, though the underlying host/domain of the site is the original from 2003, they don't even redirect to a new name).
I've been working on high availability internet hosted application stacks for 20 years (as of next month), and have never once yet seen a situation where IaaS (as sold by the big cloud companies at least) would be the right choice. I'm sure such situations exist, but they are few and far between(as I called out in 2010), UNLESS, of course, you don't care about burning money).
IaaS to me would be real useful if your workload is VERY variable. Needing thousands+ of CPU cores and terabytes of memory for short periods of time(guesstimate less than 7 hours/day on average over a period of time).
You can do on prem poorly/expensive, but it's my opinion it's far easier/more common to do cloud poorly/expensive.