The premium theme market has literally exploded over the last few years. With the new custom post type API in WordPress 3.0, themes reached a whole new level of functionality. There are restaurant themes, portfolio themes, business themes, frameworks that include everything but the kitchen sink. Sliders, post types, short codes, you name it; but there’s an underlying problem with all this new fangled functionality. It defeats the purpose of having a theme system! The theme layer of a WordPress site is essentially meant to control the presentation side of your website, the skin if you will.
By keeping presentation separate from functionality a user is free to update the look of their site without removing any core functionality, this is one of the great features about WordPress. By building all these features in to themes essentially you are marrying the look of your site to the functionality. If you discover one day that you want to go in to your dashboard and change the look of your site, you’re stuck like chuck. As soon as you change that theme all the short codes you slathered throughout your content are now GONE, the cool custom post type you stored all your portfolio items in is GONE. Now you need to call a developer to restore all of this functionality or you need to go back to having the same theme.