I have been doing some background thinking on this subject for some time now. Many projects I have worked on are set up the way of the specialist, yet something just doesn't ring true whenever I work on a project staffed this way.
Esther Derby has this take on the subject and it got me thinking. Johanna Rothman has a different perspective on the subject.
Quite often folk from different specialist backgrounds often set up yet more artificial organizational boundaries, even though they may report to the same technical manager. A user interface specialist's work will be "thrown over the wall" to the business domain logic guy and his work in turn to the database guy. No matter how great these folk may know their chosen specialisms, it doesn't compensate for the lost communications channels which suffer greatly from the adoption of this model. Oftentimes, generalists have good enough knowledge for the project and even if not, working alongside a generalist could be a potential solution to this dilemma. In the agile world, one of the truisms for me is common code ownership - it helps to reduce egos and instill a sense of teamwork as well as more practical considerations such as reducing the "truck number" for a team.