Each piece is modelled/textured in Blender. Import/export scripts attach collision and the correct materials based on name look-up tables. Levels are then put together in Godot. At runtime the individual pieces are merged into a single room mesh. The runtime merging preserves the collision nodes attached to each individual piece and parents them to the new combined mesh node. I can also choose to have the mesh combining script simply generate a trimesh instead of pre-defined box collision meshes.
Each component mesh can be easily put into a scene and instanced with others to save having to make the same rooms over and over.
Hope that answers your questions, always happy to answer as I love talking about this kinda stuff.