With the recent release of Godot 4, a lot of people are now considering using the engine to make 3D games. Often the question of how to make 3D levels comes up when people are first looking at making a game. I've been using the engine for the past couple of years to make a 3D stealth-horror immersive sim. There are several ways to build 3D levels, each with their own pros and cons. Here are the most popular methods I'm aware of:

Modular Assests With Grid Map

One of the most common methods of creating 3D maps is to use modular 3D assets. Using this method, you model a handful of meshes that can be connected together like legos. Modeling these meshes can be a significant amount of work, but then levels can be built with nearly final visuals very quickly. You can also frequently find pre-made modular asset packs on itch.io and other asset stores. One problem with this method is that rendering all these individual meshes can be inefficient. Placing each individual mesh in the editor can also be cumbersome. For that reason, Godot provides the GridMap node. If your meshes are carefully constructed to work within GridMap's constraints, it can render the meshes efficiently and allow you to construct levels similarly to how you would use a 2D tilemap. This video shows how to construct modular assets and use them with GridMap.

One downside to using this method of level design is that you are constrained by your tileset and you may find that you'll need to do some problem solving to make the level layout you want.

CSG Nodes

CSG nodes allow you to blockout your maps within the editor. Once you've finalized your gameplay, you can export the nodes and use Blender to make your final visuals. This should be done as late as possible to ensure that it remains easy to tweak your levels. The main downside to this method is that the nodes can actually be fairly difficult to use. When editing a shape, you can't move one side of the object without also moving the opposite side the same distance. This results in frequent stretching and recentering of your CSG nodes. Additionally, they have a couple of bugs that can occasionally result in missing polygons.

Make the Whole Map In Blender

Blender is an excellent modeling application and can be used to make an entire map. This is how the third person demo was created. Import hints can be used to define what meshes will be used for visuals and what will be used for collision. While Blender is very good at modeling, it is not designed specifically to make maps and can be a bit cumbersome at times. Creating holes in walls, connecting rooms, and UV mapping are all simple when performed a few times but can add up to a lot of extra work when building an entire map. This also has the downside of working in a tool external to the engine and requires frequent switching between Blender and the Godot editor. It may be possible to create addons to improve Blender's workflow.

Trenchbroom

This is my personal favorite method. Trenchbroom is extremely easy to use and designed specifically for making maps. The addon, Qodot, can be used to import your map. Qodot also gives you the ability to place "entities" in your map that will become instanced scenes when imported into Godot. It also allows you to attach scripts to meshes/static bodies imported from the map. However, the tool is only really intended to make low poly environments. That said, it gives you enough control to make some very impressive visuals. If a higher detail look is desired for your maps, Trenchbroom can be used to just blockout a level. You can then export the map to .obj to make the final visuals in Blender.