It’s not necessarily a binary “choice”. You can and probably should use both in tandem. E.G. use C++ to create templates, then use blueprints to create variations of said template.
I can have 1 tidy weapon class, but 20 weapons in blueprint using that class, changing stats and meshes on the fly with a quick interface.