I find that the best teams are small ones that swap responsibilities. I've found myself to be at my most efficient when working alongside three to five other developers as we design, model, code and test software. It's a great system as all members of the team spur each other on throughout the process and ensure that we are all on task.
Of course, this all depends on the size of the team. If you're in a large software shop then I'm sure that members will fit one role and specialise in that role.
Unless you're managing a very large group of people I would always recommend sharing each task out and working on a bit together. Most software development methodologies support this way of creating a software product and you'll find that the earlier stages of Requirements Gathering and Analysis are much easier when handled by a group.
Many seem to argue that you should specialise staff that are experts at one thing; I would go as far as to argue that they shouldn't be the one doing it, only part of the whole equation. At least with this guy/girl at your side then the rest of the team can benefit, allowing every member to know who is good at what and where to go for advice/help. In a way it is mentoring for the entire team.
For me, there seems to be very little reason to specialise your team UNLESS you're managing too many people to work on multiple stages. Even then I would look into swapping people around in different roles during this time, creating a mix of the two styles.