Many devs have to use/port their own player, a 3rd party player (free or paid) or use apples AVFoundation as a platform to build their app off of. VLC uses AVFoundation (not the controller view) for HEVC and AVC decoding then for the other dozen or so codecs it can play back it uses its own VLCkit engine with open source decoders.
If Apples player doesn't support your entire ecosystems preferred codec like Youtubes VP9 then its a requirement. This also applies to apps like Infuse, Plex, VLC, and many more that are either too well established not using HEVC to start or the apps purpose is specifically to play other video codecs not natively supported.
Another very important reason apps will not take the easy route (Apples native player and controller) is because they will need to use a 3rd party SDK for analytics, marketing and advertising (commercials) for ad revenue. A small dev team can code a really nice app but it requires twice that to get and keep a steady stream of businesses paying you to run their ads.
Also devs using their own app and porting it provides consistency for their app across devices in form AND function. Think of it this way, if you were a dev for netflix would it be easier to update 1 java/apache/open source/generic app that is on 15 different devices/OSs OR 15 different apps specifically made for each device? They would either need 10-15x the amount of employees or not update some of the less popular streaming devices quite as often.
A lot of players also are used for local streaming, have features for play speed, their own brightness, repeat, loop, metadata display, time stretching audio, level of network cacheing, and other things not supported with AVPlayerControllerView.
Good news though is all those features Apples native player and controller support automatically can be implemented into third party apps and players as well. PiP, HDR/Frame content matching, AirPlay, background audio, Siri, etc etc.
Unfortunately it needs to be manually implemented. Sometimes depending on the app and player turning content matching on is a bit trickier then just setting 'appliedPreferredDisplayCriteriaAutomatically' = TRUE, but nothing impossible which is why its support in quite a few apps. Sometimes its just not done because swapping between HDR/SDR inputs isn't suited for the app, an app where you skim through multiple videos where it would be constant black screening for example.
Honestly what I found to be best is to set my TV to 4k SDR and turn on content matching frame rate and HDR. The majority of apps that stream HDR content have content matching on already (Netflix, Amazon, Apple+, Infuse, etc). Apps that don't support HDR it doesn't matter because the TV will default to SDR anyway. Only VLC whose devs have been pretending to add the feature for years is my only hold out, I use Infuse instead....
info here...
Long story longer. Making your own app is a lot more challenging then using the default player and avplayercontrollerview. Porting your app is more difficult then using the default player if you ignore the content it serves. Devs didn't go through all the trouble just to scrap it and go back to Quicktime. All hope isn't lost for you though, when you find a particular annoyance with an app send the dev polite feedback especially if its a feature request. Bring it up on this form and send add a feedback link, there will be other people here that will also request it.