The way I had it setup, the noise modules are C++ UObjects. The terrain generation code (C++) takes a noise module reference as a parameter.
In the Blueprint you construct the noise modules, set parameters, combine them etc, and then pass the final module reference to the generator, and off it goes. You’re just using BP as the handy node-based configuration editor, all the code execution is C++.