I often use blueprints to make structures, because I’m still developing the part that’s going to use said structures, and I’ll end up adding new variables or removing some, and every time this happens and I recompile (if they’re made in c++), it makes things slower to fix because sometimes you lose the names of the variables that are missing of the structure in all the blueprints that it’s used.
While if it’s made in blueprints, it’s way quicker to fix and you can see the names of the variables that’s been removed. And the problem is, that if you make a structure in blueprints, there’s no way can access/use it in a c++ only subsystem for variable type (that I know of).
Another reason would be that sometimes you can use a blueprint for a class that you want to replicate, simply because it’s easier than using macros (and it’s also easier to prototype in general), and that would be a base class used in a structure, then you definitely cannot use that structure in a c++ subsystem and you’re stuck with either porting the blueprint class to c++ or doing some funky rerouting stuff to access it with a couple of casts.
Overall I really think it’s gonna be a net benefit if all subsystems can be a base class for blueprints, but done properly by the engine team. I’ve tried it myself and it works, but sometimes there are errors in the editor (probably due to unimplemented things or not proper checking due to a lack of knowledge of the editor’s internals).