In such situations, it’s important to figure out why professional players are able to realize so much more potential with a particular class/character/build/etc. while more casual players cannot. Generally, that means the additional performance must come from two things at the pro level - a high bar for execution (e.g. difficult timing or physical dexterity), and/or extraordinarily complex strategy that likely changes in real time (e.g. having a huge number of moves available at a given time and needing to choose the right move to use on the fly).
Once we identify what separates the pros from the recreational players, we can figure out what our design goals for the classes are and formulate a way to reach those goals. For example, if we wanted to make Class A from your example perform better against Class B at the casual level, we don’t necessarily have to modify the power of Class A or Class B. In such a situation, I might lower the bar of execution so the optimal Class A strategy is more lenient and easy to perform. I might make UX modifications to encourage the player to choose the right move to use in the given situation. This would not necessarily change the matchup at pro levels of competition, but would have large effects at the recreational level. Similarly, if I wanted to isolate changes at the pro level, I would look to modifying game factors that have very high execution and/or strategic requirements to perform.
If a designer can figure out what differentiates two groups of players, they can design around those distinctions to target one specific group without affecting the other. I can tune the game experience for one group along a particular variable without necessarily touching the other group in question. This approach is the design principle I like to call “orthogonality”. We don’t always have to go only forward or backward along the same line - we can go sideways too.
Got a burning question you want answered?