Size: I like groups of size 2 or 3. Clearly 2 is the smallest group size. Once groups get to size 4 or greater, students can hide. This is something I want to avoid.
Mix 'em up -- generally it is a good idea to move students around. One can use the Random() command in excel to create a random list of numbers, and then sort students on that column. Then take bunches of 2 or 3 students to form the groups.
Random shuffles aren't always the best, however. For instance, there may be certain personalities you want to keep away from each other. In this case, one has to do some group engineering. Experience tells me that as you get closer to the boundary of a classroom (i.e. the walls), there exists a greater probability of personalities, especially if groups were allowed to form naturally. I also look for students who are quiet. Then I make a list of personalities and quiet students. Seed each group with exactly one from this list, and then fill the groups with the other students.
The number of people in the group is but one aspect of heathy groups. Students can get noisy, chatty, or a person can start dominating discussions. It is important to be an active coach and mentor. An instructor might be called upon to manage personalities and guide through gentle questions/directions like, "Can I count on you guys to work as a team today?" or "Let's stay in mathland (to the student texting)."
It can also be useful to talk about what it means to be a good group member. A good group member shows up to class ready and on time, listens carefully to their partners, is supportive, and offers appropriate levels of help at the right time (i.e. no blurting out answers and having a genuine respect for learning).
Short version:
- Find a good size (2 or 3, in my opinion) and mix of students.
- Coach and mentor group dynamics until they work as teams.