I’m not a fan of any “plugin territory” functionality baked into themes, including (but not limited to) everything you’ve mentioned: widgets, shortcodes, page builders.
The one major con is when the theme is switched, all that data appears to be lost or broken (i.e. unparsed shortcodes). Of course, that can be a pro depending on how you look at it, as it discourages users to switch away from your themes. But then that you’d have to deal with angry support emails, bad reviews, etc. I think it’s just a bad idea overall.
If I were to do something like this, I’d make a plugin called something like “[Your Theme Shop] Shortcode Pack” and include all the common shortcodes that are shared between all your themes. That way, you’d only have to maintain one codebase. And, it could have appeal outside your own themes, leading people to check out your work that otherwise would’ve never heard of it. Could also include widgets in there too.
I’ve completely avoided including page builder functionality directly in the theme. Instead, I’d just make sure my theme works fine with an existing page builder plugin. Beaver Builder (@RobbyMcCullough) is a popular one. I’ve also been hearing very good things about Tailor (also a member here: @andrewworsfold).
At the same time, it’s hard to deny that page builder themes can be extremely popular. And my themes are not exactly best sellers. So I’d take my advice with a grain of salt.
In any case, I’d prefer to keep my focus on the aesthetics of things, letting others focus on the theme-agnostic functionality. I believe it’s the best plan for the long-run, to avoid getting drowned with technical debt.