Well, league has the terrifying prospect of balancing 131 champions as opposed to 21. that's a near impossible task to make it so all of them are capable of seeing competitive play. It's just not feasible. In addition, teams in league ban & draft team comps before a match, overwatch has the advantage of giving players the ability to change heroes in the middle of a match to suit what is needed right then and there.
And there will ALWAYS be some champs and heroes that will perform more optimally than others based on the skill of the player. That's just part of any game.
And talking about mechanical design of champions, let's talk zenyatta. All characters have big peaks and valleys in various attributes. Reinhardt is great in close quarters & tanking bur really bad dealing with ranged threats alone. He has definite peaks and valleys and excels and out performs many champs in one area, but is one of the worst in others. Then you have say a hero 76. Good at range, decent at close combat, has decent sustain, and is a real jack of all trades middleman in a lot of areas. His peaks & valleys of effectiveness are very even across the board. Decent at everything, not excellent or bad at anything. Useful, though maybe not ideal, in all situations.
Zenyatta on the other hand has very low valleys (extremely squishy and low mobility) while having no real super strength that makes those tradeoffs worth it. He's not going to be super effective DPS, he's not super awesome healer, and he doesn't truly excel at any one given thing. His weaknesses aren't worth his downsides. Instead of making his downsides less terrible (immobile squishy) I think the better approach is give his upside a higher peak. How to do that, I'm not sure, but making him excel at something would help distinguish his identity more.