Sinnoh, mostly speaking in terms of DP, has two fundamental core reasons why every team ends up the exact same:
>Barren options
>The options you do get are genuinely really fucking good (bar Luxray, who mostly gets by on how cool it is)
The Sinnoh starters, Garchomp, Lucario and Staraptor are INCREDIBLY good and flexible Pokemon that all hit like a truck and have insane coverage options. They make almost every other Pokemon you can get look even worse in comparison. Why use crap like Purugly, Skuntank, Kricketune, Lumineon or Golduck when Sinnoh's "mascots" make such a strong, well-rounded core by themselves? Johto's barren options in contrast are mostly due to hiding all the good mons through work or effort (Heracross, Crobat, post-game trade evolutions, Houndoom, etc.) which leads to one of the actually useful Pokemon like Ampharos becoming ubiquitous just to HAVE an option in the first place. Meanwhile modern games suffer choice paralysis due to having too many options, many of which overlap each other, and having the exact same favorites in every game like Eevee, Gardevoir and Lucario
Kanto is honestly the only game where team building is actually any fun because they give you most of the fun options by midgame. Hoenn does too, but has too many single stage shitmons I couldn't give a fuck about and kneecaps itself by having Ralts be a Route 102 encounter. It's really the start of the modern problem of the franchise giving you a Pokemon that's way too flexible and popular immediately