I know it's now the common wisdom to not build functionality into themes, as advised by WordPress, Envato, and others. This includes the likes of content types, taxonomies, sliders, shortcodes etc, to make themes as flexible as possible when used for different applications. I know I don't like downloading themes which have more functionality built-in than I need.
Suppose that a theme has been purpose-built for a client with specific needs. As much functionality as possible has been delegated to plugins, however this does create a dependency on plugins when such functionality can be part of the theme itself.
For example, I've used Pods to establish custom content types and custom taxonomies; it's been great for quickly building up these content types and their fields, but creates a dependency on Pods where it is not really needed. These ends can readily be achieved through the theme itself.
It's normally advised to not include custom types or taxonomies in themes as the themes will be less useful to other users, and would not be accepted by the WordPress theme repository. However, in my case, this theme is custom built for this client and the client's needs, and it is not intended to be used elsewhere. I also have an ongoing relationship with the client to support the site and make revisions to the theme.
In such a scenario, would it be acceptable to include the custom types, taxonomies, and fields into the theme? Is the no-functionality-in-themes more a guideline than a rule, applied more heavily on distributable rather than custom work?