I have to tell you, at least for me, it seems that the best way to make an ue4 game is simply this:
Anything that happens on every tick for lots of objects, make in c++ if you can. Optimizing something that happens every tick gives visible results. The difference between c++ and blueprints is pretty large in execution time. So every object, every tick adds up pretty fast.
Everything else use blueprints. It just doesn’t justify your time IMHO to make a level streaming c++ function. It happens once every few minutes. And you simply wont get any optimization out of c++. Time much better spent elsewhere.