The team pressure into working with the project is in many cases a positive force, but it can turn into a problem if it gets too big. The students tend at the end to spend far too much time on the project. They learn a lot by doing this, but the workload can create problems in other areas of the student's life. An obvious problem is to monitor who is doing the work. This has to some extent been lessened by not giving individual grades to team members.
All members pass or fail, at least in theory.
There have been examples where individual members of a team have been failed. A problem, at least for some, is that there is less control over what is learned. The students learn different things, depending on which part they work on. We don't consider this as a problem, since there is no course that has this as a pre-requisite. Our main aim is that each student should learn a certain area to a substantial depth, and we don't worry about which area in distributed systems it is.