To be an expert at something normally requires that you specialize in that area. For a start-up you need to be a jack-of-all-trades but as a company grows it makes sense to have staff that specialize in different areas.
My background is in pay-per-click marketing and a lot of companies do very well managing their own Adwords campaigns. But for large companies or small companies that don't want to deal with learning a new skill, the cost of hiring/outsourcing to someone who specializes in that is justified by the time saved and the improved ROI. This applies to SEO as well but also to any area where the work involved has a significant impact on the business.