No, most/all platforms expect your code to be a monolith. This means that any code changes require you to actually patch your game instead of just downloading a new dll. You can get around this with blueprint logic (as you pointed out) or by integrating another asset based scripting language like lua into your build and workflows.
But all’s that really means is that you have to patch in support for new types/features but the content itself (blueprints and other assets) could be in a separate pak files that are downloaded and loaded up by your game.
There’s also the new-ish (4.27+) Game Features system that lets you build plugins that are dependent on your game which allows you to write dlc/update code as if it were a separate dll without it actually being shipped as one. You can each enable and disable them at runtime! The code is still a monolith, but the plugin structure allows you to prevent the types of references you’d want to avoid. Features are still a work in progress so there are some gotcha’s like the fact that subsystems from Features still get instanced even if the feature is disabled.