With regard to new, "agile," development methodologies in business, I think it depends on the business' structure and environment. Many agile processes claim that any member of the agile team should be able to pick up any task and run with it. However, since agile methodologies are relatively new, many businesses aren't suited for creating teams of developers that can perform all tasks sufficiently.
A lot of existing companies (who didn't start out as "agile shops") have had long-established QA and development departments, each containing specialists that do their job well and were hired because of it. When you combine members of both these teams into an "agile team" whose members are expected to be able to do everything, you can run into some problems. The people that were originally hired as QA can't be expected to write Java or .NET code, because they were hired for their expertise in testing and quality assurance. Likewise, a Java or .NET developer can write high-quality code, but may not be familiar with the best QA techniques.
When you try and cross-task these specialists, you can end up hurting yourself since it can take more time for those who aren't familiar with another skill to learn it. And even when they do learn it, can they learn it to the level and use it with the precision of one of the specialists, who have years of experience? They can't possibly learn everything they should know within the context of an agile iteration/sprint.
So if a business has intentionally hired an "agile shop" where all of its members are experienced and excellent at both developing and QA testing, sure, let everyone work on everything. But if not, let the specialists do what they do best. Let the code monkeys write the code and unit tests and the QA team find the bugs and run regression. It'll probably save time, money, and headaches in the long run.