Isn't this a good thing? I mean you say that like it detracts from the game, if it weren't just a rock-paper-scissors game then you'd have OP classes and unbalanced play. I mean the fact that it feels like rock-paper-scissors means they have the balance right. I thought that was the whole point of TF2.
Well its both good and bad. Its good that there isn't any case where the whole team is best off going as class X and the folks that do not go with class X are at a stark disadvantage for not picking that class.
But on the other hand, you are much more likely to reach cases where your ability to win a stage is entirely reliant on the decisions other people make on your team. That is to say, there are cases where the team you are on is so unbalanced, no matter what class you switch to you can still tell your team will lose outright before the round is even halfway done. Along with other cases, your team is doing so well together and has class match-ups that are superior enough that it doesn't matter if you are even afk or not, you can tell your team is still going to dominate the round and win outright regardless of how you decide to contribute.
In either case, what you decide to do matters very little. It can matter more if you start getting better scores with a wider variety of classes, but it is most entirely dependent on how good your teammates are at viewing the map's action as a whole, and how that impacts the decisions they make in supporting (or lack thereof) their other teammates.
For instance, in a lot of maps, I can tell that the defending team is going to be at an insurmountable disadvantage if an engineer isn't actively working to hold the team's overall position. But if I am on one of these maps, and there are no engineers on my team, I often still play a different class knowing full well my team is doomed to lose. I play that class far too often on those maps because I know it's needed, which makes me not want to play it on those specific maps because I feel tied down into constantly doing the same stuff whenever I am on them.
Plus when I am the only engineer and I am serving an important role, then I am guaranteed to find someone on the other team to switch classes just to target me specifically (which is an entirely correct decision to make on their part). This is particularly frustrating when by successfully doing my job in fortifying a crucial position, the rest of the team just charges ahead to score more kills, not only leaving my position with 0 support whatsoever, but also often putting them in a position that makes it easier for them to die than if they had just held back and waited for the enemy to come to them instead.