GHA have always been a PITA for any serious DevOps; it's quite clear they were designed to integrate in 7 lines of code and then tell everyone who complains that they're doing it wrong.
This does not surprise me.
You've perfectly described how microsoft operates and how github actions is apparently based on AzureDevOps pipelines.
It is a PITA, but that can be significantly improved IMHO if you just write shell script wrappers for your tasks. Not only does it make it easier to run CI locally, but it also makes it so much easier to move platforms in the future.
When the GH action YAML is just invoking shell scripts, I find it quite pleasant to use