Cost wise, my self hosted operational expenses are -way- less expensive than any cloud offerings, let alone signing up for every SaaS/PaaS service I want to try out or actively use. Most offer self-hosted/self install for free, charging for hosting on their infra. A single, reliable small VPS runs around $3-$5/mo at the least. I have almost 30 VMs (not all powered on at one time) on my own two e-bay purchased servers in HA. Also around a third of those VMs require more RAM or storage than the low costs VMs. So just having those VMs would cost around $200 a month. Though if I used cloud based, I likely wouldn't have nearly as many VMs.
Upfront costs for the server + drives was ~$500. I also have a NAS that was around $500 with drives. So all in one time costs around $1000. I've now used those items going on 6 years, replacing a few hard drives here and there.
Backup wise, the hypervisor backs up images and snapshots to the NAS. I backup the entire NAS to Backblaze B2 at a cost ~ $100 a year. S3 would be around $750/yr alone.
Self-hosted: Capex: $1100 (hardware, some licensing items) Opex: $300/yr (hardware replacement, backup costs, external necessities [domain, Voip trunk, etc] )
Cloud hosted: Capex: $0? Opex (Lets say half the VMs, 15x$5) : $1700/yr
In terms of availability and reliability to make it work; it certainly does take some time and effort to maintain. I am responsible for all the updates on the OS and software of course,and I can't blame anyone else for failures. Again, I like this level of control and responsibility. I can update on my schedule for down time or when needed for security fixes. I'm not waiting around for some one else to apply the fixes or inconvenience of unplanned downtime for it. I'm not saying my stack is more reliable than AWS or Azure, but I've taken steps to minimize issues. I'm still at the mercy of my one ISP line and electrical outages of course.
What concerns me about self hosting: You're responsible for everything. Security most of all, people seem to skimp on because it is difficult or gets in the way. You can't make a 100% secure system anywhere, but if you're self-hosting you absolutely need to work WITH security in mind and not sabotaging for the sake of convenience or 'just getting it working'.
It's not a set it up and forget it situation. You still have to do updates and occasionally fix things when they break. Reducing the amount of time and any barriers to this is key in getting it done. Personally, I use orchestration and automation tools to help.
Interoperability with other services/APIs can sometimes be finicky to get right, especially behind NATted situations. Sometimes not worth the hassle.
Some ISPs block certain well known ports. Of course, NATting services that are not well documented, also sucks sometimes. ----
TL;DR: I like the control that self hosted gives me. In my case it's cheaper than AWS/VPSes. If you do self host, keep your stuff updated and as secure as you possibly can.