I hardly ever ever let my kids pick partners. When I do, I do it like this:
Once I really know all my kids and I know the ones who get left out, I'll keep that in mind and say, "So-and-so, pick a partner" (Always giving quiet kids and out-liers first picks) When there are about three pairs left, I just quick partner the last three on my own. I refuse to ever have a last pick.
I only do the above probably 3 times a year-- mostly, I just partner my kids myself. I have permanent math partners and permanent reading buddy partners. The reading partners work better when kids can plan who they will be with and both read at the same level. As for math, there are some activities for which I want partners to be evenly matched, but others that I want two different levels. For this reason, I have a math parnters chart. The higher half of my class is listed randomly down one side, and the lower half of the class is listed across from them, down the other side. (Of course, i don't group for anything in math, so they don't know this) There is a purple line connecting the high/low partners across from each other the whole way down. There is also a red carrot connecting the kids who are above and below each other (a high with a high, a low with a low). If you can picture that! When I want kids to work in a group that is homogenenous, I ask them to work with their red partner, and when I want it to be heterogeneous, I ask them to work their purple partner.