WordPress platform has evolved over the last years and thins aren't the way the used to be when WordPress was just a blogging platform.
Just as when a standard blog theme only was in charge of how your blog posts appeared, a theme should still do the same.
"This is about separation of concerns. Themes should be responsible for the look and feel of a website, while plugins take care of the functionality. This is precisely why the two exist."  However, today's websites are much more advanced in the terms of functionality offered. This does not change the role of a WordPress theme. Because of this, the functionality is moved to a separate entity: a plugin.
Envato explains the benefits of this and it couldn't be clearer:
Moving functionality from the theme to a plugin allows for modularity and portability, which has advantages for both customers and authors:
- For the customer, by using a plugin, it’s simpler to enable and disable functionality as needed while still using the same theme. They can also switch themes without fear that the data they’ve spent hours entering into a custom post type is going to vanish from sight.
- For the author, it’s simpler to use the same piece of functionality across multiple themes. Building functionality for a particular niche is no easy task, and this makes using that functionality with multiple designs easier.
Developing new things
Plugins help us focus on providing a great and complete experience for you since it allows us to concentrate on the theme design and usability.
It allows YOU to create a better website
Picking a theme that has everything "built in" sometimes can be cool but think about when you want to move to a new theme. All of these sudden you will be stuck with content that can't be transferred, built-in shortcodes and custom post types.
Your theme is one of the many aspects of your website and they need to be separated as much as it can. Plugins should take care of the functionality while themes should be for styling and design.
You can read more on the below article why bundling plugins(bundling functionality inside the theme) is a bad practice: