Because of the capital and talent required to build a competitive offering. Even large companies like IBM and Oracle have failed to keep up.
The big 3 clouds have built a nice moat and can charge whatever they want. They still compete on prices but it's clear they're colluding on network fees at least.
It's not just capital or talent. I have seen first hand non-tech executive decision makers pick a specific cloud provider because of the old adage "No one got fired for buying IBM". That momentum is incredibly hard to compete against. Google Cloud is fairly solid from a technology perspective, not to mention Google's deep pockets, and still has an uphill climb against MS and AWS.
Not directly a response to you, but GCP is actually phenomenal in some areas over AWS: BigQuery, Data Studio (I know it's not really "GCP" but vs AWS' offering), and Pubsub come to mind.
Oddly enough, they falter in other areas: no equivalent to Kinesis Firehose, and true to your point, I was told by customer service just to build my own DataFlow job to take a Pubsub topic and make files.
It's like some of their product managers have a very customer-first mindset (BigQuery, Pubsub) and some could not care less.
There's not much competition because of enormous lockin effects. Once a cloud provider is chosen, you're pretty wedded to it.
Inside your dev team, every institutional bit of knowledge about how AWS works, how to configure it, how to work around their mostly bad docs, and how to navigate their hot garbage UI.
Every line of code that touches an AWS api.
If you need data centers in certain regions for eg localization laws, AWS is afaik the only choice.