This is a good point, but I have some ideas (observations and thoughts) here which might be interesting.
Raw rating based matchmaking is a rare concept. You know pretty much all the considerations: playing with the same people, sniping, team compositions…
I have also observed a slight tendency to have counters - and things like mount or skin coordination. Not to mention the appearance of names in the most fitting times, such as HelpTheNoob or HappySpreader. Keeps me joking about living in a simulation.
A relatively simple solution to this all is to use something similar to the traveling salesman problem, using weights as a second dimension. Since MMR isn’t entirely accurate either, a weighed sum of these metrics can be used to actually find optimum. A lot of measures can be used with various weights, such as composition winrate, counters, matching mounts, waiting time for players, mirror composition bonus, meta composition bonus, the possibilities are endless. Some of these can be hard filters before the famous expanding search criteria state (which is per player). Then you sort the potential matches and pick the highest score (or a combination of).
(And it’s not even silly. Would you have a fair match by rating where one team hard counters the other, or rather a perfect 50-50% as far as compositions go, but one team is slightly higher rated? The mounts part is silly but I swear I’m seeing things )
The rest is confirmation bias. You can have a counter in your first match, or after a few wins.
My Sylvanas streak yesterday, there was a Butcher in the first 9 or so. I’ve seen Li Li twice. Pretty much all matches had 4 AA per team (and Kael, likely because of Butcher). Pretty much all matches had stealth heroes. Notably, however, they were equally often teammates and opponents.
In short: it’s not magic actually.
ps.: Having one or two counters intentionally - as in, either logically defined or by winrate - as a weight can give a bit of replayability and fun. It’s like M+ affixes. We don’t draft, however we can still understand the setup given. Sure, it happens automatically, but it can be considered as “added fun scenario” in the above system.