I think that used to be the case, but Linux has improved and Microsoft has really really declined.
I used to call MS the "backwards compatibility company" because they put a lot of effort into keeping their software with all kinds of old stuff. This made it difficult to argue against using Microsoft because as you alluded to, sticking with MS meant paying a licensing fee, but that's small potatoes compared to migrating to new software and integrating all of the business applications with that new software.
Now Microsoft doesn't support things very long. The Cloud makes them money, so they're forcing everyone to completely move everything to the cloud. They're ending a lot of old software "on-prem" software. Dynamics GP is complete dogshit but a lot of businesses are heavily integrated with it. They're going to end that, but don't worry you can pay some expensive consultants to help you move things to the cloud.
For .Net their concept of "LTS" is effectively 2 years. That means making changes to software every two years. Since it's becoming required to run everything on their cloud services they could just shut down your applications even if you wanted to put off an upgrade... which would probably not be a good idea because you'd be running a webservice on an out of date and unsupported stack. Some application running on-prem behind a firewall you could get away with that. Now you have to do a bunch of work to keep thing updated based on Microsoft's schedule.
The end result is sticking with MS means significantly more IT work than in the past. LTS on a MS .Net based stack is 2 years. In Linux land, LTS is typically 5 years. Microsoft doesn't back-port things to their older servers to force you to buy new licenses or move to Azure.
If you move to Azure, you're actually running your programs on Linux anyway (Note even MS wants to try maintaining Windows Servers LOL), you're just restricted on how much control you have over it. So you're spending a lot of time fucking around with some shitty web interface to do things on a Linux system that you could accomplish in minutes with bash on the same OS.
Company I work for is still in the "nobody ever got fire for buying Microsoft" mentality. Past six months I've made little forward progress, because I'm mostly figuring out how to make things work on Azure, updating to .Net 10 because support for .Net 8 ends in November. I'm forced to used VS 2026 (which still has bugs, VS usually take about a year before they work out all the kinks) because they don't support .Net 10 in VS 2022. .Net 10 EOLs in 2028, so that means someone has to spend a lot of time every two years updating a lot of software. I've spent a lot of time migrating things to different servers because they didn't backport TLS 1.3 to their older server OSes (even though they say they're "supported").
You may be thinking of how MS used to be, but they're moving to be a cloud services company now. They're not the "backwards compatibility company" anymore. There are massive costs with sticking with MS now. As the guy who's job it is to keep things working, I'd rather do the work to migrate to a Linux system with a five year LTS cycle than migrating to Azure with a two year LTS cycle. I'm migrating shit either way, but with MS my job is becoming just constantly updating a lot of shit on the whims of Microsoft.
Contacting Microsoft about issues is a waste of time now. You may as well cut out the middle-man and ask copilot for help because it feels like there isn't anyone actually working at MS if you ask them about anything technical. Asking copilot is useless, but at least you get a useless answer faster than asking anyone at MS.