When I was a consultant we would plan out 25 piece cloud deployments for little pie in the sky apps that would never see more than 200 users. Everyone has been trained that 'cloud' means a lot of expensive moving parts and doesn't stop to plan their deployments beyond that.
It's all of five minutes to write a deployment yaml and ingress and have literally anything on the web for a handful of dollars a month.
I've written rust services doing 5k QPS on DO's cheapest kube setup.
It's not rocket science.
Serverless node buns with vite reacts are more complicated than this.
Ten lines of static, repeatable, versioned yaml config vs a web based click by click deploy installer with JavaScript build pipelines and magical well wishes that the pathing and vendor specific config are correct.
And don't tell me VPS FTP PHP or sshing into a box to special snowflake your own process runner are better than simple vanilla managed kube.
You can be live on the web from zero in 5 minutes with Digital Ocean kube, and that's counting their onboarding.
It's like the old Herman cartoon - "Sure I could sell it to you for $50, but wouldn't you rather have a $5,000 painting?"
People often don't like admitting that their project does not require a rocket and the associated scientists. Often even Kubernetes and friends is a bridge too far for what is realistically a single-page PHP app.
The other factor is 'not my money' syndrome. People who work at companies and don't have a real stake often don't feel bad about burning it for the sake of convenience.
This is real. If your app breaks because your AWS region crashed, the CEO probably isn't going to blame you. If you have similar uptime but the crashes are due to you picking a cheaper setup, you might be in more trouble.