In its current state you usually get lopsided teams. It splits on classes yes, but skill is never a calculated factor. Someone could be bori pvp10 and have no skill, so gear/pvp levels cant be the basis for calculating balance.
Often there is that "one noob" that is completely clueless, or a troll, and will hide or not care about winning the match, screwing the team over with 5v6.
My suggestion: Balance KDR between teams, or minigame win/loss ratio. Add up the total win/loss, or KDR, or a combination of both ratios of everyone in each team. If one team is much higher than the other, swap the DPS, healers, rogues, tanks, etc.. to obtain balance between teams. This should be a rather simple algorithm to write.
On another note, if a bunch of people decline, and there isn't enough players, it does not re-balance the number of players in the teams before the match starts. It should move people around until balance is obtained. A couple minutes of balancing before the matches start is worth the wait than a 20 minute pad farm.