Quick match has rules it tries to use for shaping matches.
If one team has a tank, then the other team will have a tank.
If one team has a healer, than the other team will have a healer.
If either team do not have a tank then it may match a bruiser on each side instead
If either team do not have a healer, then it may match supports on each side instead.
If each side has a tank, then it won’t necessarily mirror the bruisers
If each side has a healer, then it won’t necessarily mirror the supports.
It will also match 1 ranged assassin on each side (if one side has one, the other will too, exception for partied teams)
Once the intended mirrors have been matched, then the remaining spots can be filled with flex picks.
Now if players are in parties, they can be allowed to get around some of those rules. Similarly, the system only matches one of a given role, so if one side has two tanks, the other side will only have two tanks if the matching partied queued that way, but that doesn’t guarantee both sides will have multiple tanks.
Due to the limitations placed on trying to match tanks and healers, and not enough players queued as tanks and healers to meet the demands, some games end up matching without any of those. Depending on how many players queue at one time, that may then force out ‘odd’ numbered of tanks into games that already have one. (games match 10 players, and even number, so if 3 tank players queue at the same time, there’s aren’t 4 tanks available to split into two games; some of that dependent on players partying together)
Since there’s an oversaturation of assassins queued, it’s not uncommon for games to end up without other roles, and since tanks can only match against other tanks, it’s not uncommon for two tanks to end up on one side.
In another topic, I posted the composition distribution of games submitted to Heroesprofile, and in another topic I posted the amount of players queueing as several roles, so If you want to see some of the reported effects of this rules, I could try looking those up again, but case and point being to your question: quick match has certain rules, and since there aren’t enough players that queue as tanks and healers, the system does what it can with what it gets. The best ‘fix’ would pretty much demand more players play as tank/healers, but if players are going to tank/heal anyway, they may just play draft modes instead of quick match, which further divides the available players to fill for qm to suit the rules of matching.