Here is the problem with putting lots of functionality in a theme... BUGS. Nothing is ever BUG FREE.

Unless the theme has a rock solid upgrade capability built in... i've yet to see one that does... the more features that are built into it the more of a pain in the ass it is going to be to apply bug patches when they are needed.

Themes on the other hand are not so simple to update. Themes are designed to be hacked away by the user if they so desire... building functionality into the theme makes this impossible as it eliminates the capability of doing updates to the functionality.

The utopian scenario is a parent/child theme setup where you can upgrade the parent without impacting anything. But good luck getting the average users NOT to edit the parent theme directly. As soon as they do, it makes upgrading pretty much impossible without losing their changes. That results in pissed off users, even if it is their own fault.

Plugins are designed to be updated frequently because the more complex the functionality, the more bugs and the more updates that will be required. They are designed to handle this.

With plugins, the user doesn't typically edit the plugin. They can quickly and easily receive updates and fixes via the plugin automatic update functionality.

That is what plugins are designed to do.