It's not so much characters being picked in equal amounts as it is about not having characters who aren't picked at all. Having those 55-45 matchups instead of 60-40 ones is pointless if no one is playing them. This happened to Starcraft 2 in its early days. Terran was advantaged against Zerg and Protoss for quite some time. The advantage was only about 55-45, but it led to the GSL code S being 31 Terrans and 1 Zerg. There is no world in which that can be considered well-balanced.
But there is a critical point where changing characters and going against one's skill affinities and playstyles is a steeper cost than the matchup differential.
Jigglypuff was a pretty poor character in Brawl, definitely bottom 20%, maybe lower. But Jigglypuff was still my best character since I am way better at aerial spacing than any other skill test in the game. The affinity gap for me was less than the character's gap in matchups.
For a lower gap in matchups, this effect scales exponentially.
This is why there were so few Meta Knight players in Brawl: less than 10%, rather than 100%.
Again, it all depends on your criteria:
- If all you care about is characters showing up and having their names on a list, counters will help.
- If you actually care about the fairness of the gameplay in each individual possible match, counters that determine or bias the winner from character select are very bad.
For example, Pikachu was not a very common character in Brawl. (Pretty solid, but oddly rare.) The fact that he had an infinite on Fox, a modestly strong character, increased the amount of Pikachu play non-trivially.
This was "good" for on-paper diversity (number of characters used in a tourney), but awful for the actual gameplay.
An infinite causing a 90/10 matchup is an extreme case, but it is just as flawed (just lesser magnitude) to have even a 60/40 counter.