Why matchmaking sometimes seems broken.
Other people have crunched the math far better than I can, but I'd like to try and give some perspective from the human-personality side of things.
First, full disclosure: I'm relatively new to the game. That means I'm still learning all this and figuring it out. But I've had the opportunity to play in both PuBs, as well as in groups with far more experienced players, and I think it's given me a decent experience with gameplay involving different groups.
One of the biggest things that I've come to realize, is that the ease of the game for any one person can vary highly depending on whether your team is winning or losing. In games where my team is winning, even by only a small amount, my mistakes get papered over and the effect of my good actions is magnified. In games where my side isn't in control of the battle, every error makes the next one more likely, and the game becomes harder and harder to turn around. Essentially, the same team can look better or worse depending on factors largely outside their control.
This is why, I think, some people claim that the matchmaking system fails when it sticks them with certain kinds of people, mainly those that have less experience. It causes players to think to themselves that, since THEIR skill level hasn't changed much from game to game, it must be everyone else's fault. Yet I know this isn't true, because I've seen it myself as the effectiveness of my gameplay changes, even over the course of only a single match that swings back and forth.
There are lots of threads about people who go on losing streaks, but where are all the threads by the people on the other team, laughing about how they keep face-stomping all the noobs matchmaking pairs them against, or complaining that the game isn't as much of a challenge?
Because of the variance in the combinations of player-skill levels, hero-interactions, and player-skill with any given hero, IMO matchmaking isn't broken, so much that it's very VERY complicated, and exceedingly difficult to perfectly align every time.
If someone is interested in doing real statistical analysis, it might be worthwhile to track every single game a player plays, win or lose, and the kinds of teammates you end up with, as judged by hard data (games/hours played, wins, etc) not by how noobish they look.