Not necessarily. Yes, the comparative advantage of roles playing to their strengths can net you a lot of short-term gains, but you run a tremendous risk of getting stuck if one person quits or get hit by a bus, for example. Knowledge sharing via cross pollination of roles is a good risk mitigation strategy.
Yes but if you had it split into three experts for each area the chance of they all getting hit by a bus?
Also I think if you hire an expert in field x, there is a lot higher chance that their coding style and practice will be easier for another expert in field x to pick up. Ever seen a developers photoshop files :p