Depending on the level I am teaching at I use different pairing methods. For my master's level course, I usually get students from different backgrounds (it's an elective course). In this course, I use think-pair-share technique, whereby I pair students from different backgrounds and give them problems that contain multidisciplinary issues and require collaborative learning. So each student will think based on his/her expertise, share it with the other student and then come to a common solution.
For my bachelor's level course (UG courses), I typically pair students based on their communication skills (high, average, low) and academic intellect (high, average, low). I pair a student with high intellect with another who has better communication skills. Typically I have noticed that very few of my good students are excellent speakers. In this pairing the communicator will effectively communicate the results obtained by the academically better student and they will help each other with the project.