Game freak doesn't know how to balance in the slightest and this isint simply a "Not all pokemon are meant to be good" mentality. No one expects Raticate to go head on head with Dragonite and have it go 50/50 chance of beating it every time, Of course through the mix ups of abilities, stats, typing, movepools and general location of when you find a pokemon/orginal intended storyline use, there are some pokemon that wont necessarily be as good as others. There are only so many roles pokemon can play before you have to start comparing physical attackers to physical attackers, and walls to walls.
But really the gap between them could be a lot smaller, and I think if GF actually put effort and thought into it, you could still have all the different tiers but not have them be so absolutely drastic.
Kricktune, Dustox, Ledian, Magcargo, Sunflora, Delcatty, Lumineon are just a few examples of pokemon that are just so god awful, even a pokemon like Stoutland look like a top tier threat. There is really no real reason these things have to be so absolutely trash, even within the "gameplay" mentality. Magcargo and Lumineon are both found relatively late in the game, so by the standards we have set they should be something decent that made the worth wait it, but both fail miserably at being anything worth your time.
Even pokemon with huge gimmicks get shit on. Castform was a really neat idea, but its stats are so absolutely garbage that the weather theme is just put to waste. It could of been fixed if it had simply just been the main form with those stats and the weather forms changed said stats one it had transformed. Then look at Pukumuku. It had one job, one neat gimmick. To make sweepers scared to set up in case it took them down with them with innards out. All it needed was high health, and low defenses. GF did the exact oppisite and now its pretty much bottom of the barrel.
Not all mons should be OU, but most mons dont need to be as bad as they are.