Competitive play has plenty of diversity. But again, improving that diversity to a significantly higher level than we have now would require ongoing patches, it's not something you can expect to happen in a single game even if they focus on it. Because again, they'll never be able to have more than a handful of people in charge of balance, and a handful of people on such a complex issue are always going to make oversights, which will inevitably be found when the legions of players get their hands on the game. Players will always have an overwhelming advantage in terms of the number of people looking for ways to unbalance the game, and the nature of competitive play is such that even a tiny advantage will be used if it's found
Yeah, you'd be surrprised how much diversity there is in most Pokemon formats. Hell, some people have complained about there being TOO MANY viable Pokemon, since a large amount of viable Pokemon can be difficult to prepare for when team building! Regardless, I think its fine that not every Pokemon is viable. Balancing over 800 monsters is frankly totally unreasonable!
Something to note is that one of Pokemon's biggest strengths is that you can basically get totally different games just by tinkering with the banlist. This is most well known by Smogon's tiering system (where you have one format that allows everything that is banned, then the next format bans whatever Pokemon has a certain amount of usage, and it keeps going like that), but even Gamefreak tinkers with this via their Battle Spot Special formats every season, and the wide variety of strange tournaments they've done. Like to give an example of some of the stuff this has led to: I remember last gen when we had the Kanto Classic format,
SEAKING of all fucking things made a niche for itself because it was the best check to Zapdos due to Lightning Rod rofl, and it could spam Horn Drill to be a general pain in the ass.
I should also note that when you start hunting for successful teams in most metagames, you're going to come across some high ranking teams that use very weird Pokemon. Sometimes, when making a Pokemon team, you're left with a hole in your team, and the common standards just won't solve your problem, so you gotta hunt through the Pokedex and see if you find a Pokemon that CAN solve your problem! The most infamous example is probably when Se Jun Park won VGC 2014 with Follow Me Pachirisu. If I recall, he used Pachirisu because a lot of Pokemon were starting to run Safety Goggles to get around Rage Powder Amoonguss, and Pachirisu would stop that strategy dead in its trackcs (in addition to pairing well with Gyarados and Garchomp). To use a more obscure example, while hunting for some Japanese Battle Spot Singles QR codes that reached a ranking of over 2000 points, I came across a strange team that was using Eelektross without an Eelctric-type attack!
Now, stuff like STABless Eelektross is something I'd never approve a Smogon analysis for, since lets face it: That makes no sense on most teams! However, this team in particular needed it to cover some threats they were having problems with, and it clearly worked very well for them considering how highly ranked they ended up being! This kind of stuff happens in Pokemon all the time, so I'd argue most metagames have a reasonable amount of diversity.
What is feasible to balance better however, is the typing chart. Ice in particular desperately needs a defensive buff, because while its a fantastic offensive typing, we have a lot of slow bulky Ice-types who are ruined by it being a god awful defensive typing. Bug might not be a bad one to buff either, maybe removing its Rock weakness could go a looong way to making those Pokemon much more interesting Ground-type checks. That's just stuff off the top of my head though, Im sure plenty of rebalancing of the type chart could be done.
Regardless, if your goal in Pokemon balancing is "I want my faveorites to be good", I just can't see that as realisitic. No matter what Gamefreak does, there's always going to be Pokemon that franky aren't good at all in competitive play, harsh as that is.
My personal solution for this is to use Pokemon I think are cool in my in-game adventures, and get serious when I battle online. So for example, when I was doing a 2nd run of Pokemon SM a while back, I traded myself a level 1 Dhelmise for use early in the game. I think Dhelmise looks cool, but I'd probably never use it online because its super slow, not very bulky, and has an iffy movepool. But when playing ingame, that doesn't really matter too much because its not like the AI's teams are made for competitive play in mind either! I think there's nothing wrong with sticking to faveorites on an in-game run. There isn't really anything wrong with sticking to faves in competitive play either, but thing is, that will likely HEAVILY handicap your team. And I think that's ok, because you still got a place to use Pokemon you think are cool without it causing you to lose!