I see both points of view

This is really all I'm saying. There's more than one point of view here and it's going to be based on who's using WordPress. There's no question that if you want to change themes, while keeping all your functionality, it makes more sense to have that functionality be coded as a plugin, but is that how most people are using WordPress. Often a change in theme means a change in functionality too.

When clients approach me to develop a theme they don't ask for functionality. They tell me they want a theme with a calendar. To them that calendar is part of the theme. The see it as part of the design. Later they come back to me wanting a new theme because they don't like how the calendar looks or they want a theme that has social media links instead of a calendar. The average user of WordPress doesn't necessarily see the difference between theme and plugin.

Other clients might come to me looking to have me customize a theme they found. Often they chose the theme, not because of the layout or color schemes, but because it included the calendar they wanted. Again they see everything as the theme and not necessarily a mix of theme and plugin.

The above is not typical of everyone, but it is typical of a certain class of WordPress users.

You can reduce all your WordPress files to be nothing, but a bunch of hooks and widget areas and a css file to style everything. That would make your theme very flexible. It would also confuse the majority of WordPress users who'd be wondering why when they installed the theme it didn't look like the demo they saw. Are they going to use your theme that requires them to add plugins and widgets or are they going to use the theme that looks pretty much like yours, but has all the functionality built in by default?

I think Christina is exactly right in saying

that the future of WordPress is shaping up to be less about everyone change themes like they are socks and more about what Drupal is doing, which is to package different distributions around a certain concept.

I think you'll see more themes developed as turnkey solutions for a specific industry. As an example think of a photographer who wants to use WordPress mainly to show off their portfolio and have image heavy posts. That person will need to have all sorts of image gallery functionality, etc. that right now exists as a plugin.

Some theme developers will create a design and bundle it with those plugins. Other developers will put the functionality directly in the theme. Like it or not the theme with the functionality built in is going to be the easier one for most people to use and is going to be the one that gets recommended more often by those people.

Again that's not necessarily true of everyone, but it is true for a large group of WordPress users.

When someone using that theme wants another look for their site they'll come back to the place where they found the theme and discover a series of skins (a new css file? a child theme?) that exist to change the theme's look.

Again I'm not arguing that it doesn't make sense to code the functionality as a plugin instead of placing it directly in the theme, but it does add one more level of complexity for end users and one more place where they can make a mistake.

Don't Make Me Think.

Those of us commenting here don't have to think about adding a plugin. The average end user of WordPress still does. Ultimately our goal as theme or plugin developers is to make their lives easier. For some that will mean coding functionality directly into the theme and for others it means separating the functionality into a plugin to make the theme more flexible.

Decide who you're developing for and code accordingly.