You're not alone by far. The working theory for cases like yours is that the CPU or maybe memory access is the bottleneck. The reason you wouldn't see the CPU pegged at 100% is that, over however many milliseconds it takes to build a frame, the CPU is 100% busy for a fraction of that, but then it is sitting idle waiting for data to move from main memory to the GPU, and again while the GPU does the rendering. Ideally of course the CPU could keep going and work ahead on other tasks, but that isn't always possible, and the current level of optimization may not take advantage of every chance to do so. But without special tools you won't be able to see those periods where the CPU (or one core or whatever) is saturated because standard resource monitors average over longer periods than the time taken to build a frame.
I did some testing in a highly repeatable area of the suit tutorial that tends to suffer from reduced GPU utilization, where highest reported per-core CPU utilization at a 1000ms polling rate also well below 100% (though 100ms polling rate did reveal transient spikes to 100%).
Potentially relevant system specs:
Ryzen 7 5800X
RAM
SK Hynix P31 NVMe (game SSD)
Radeon RX 6800 XT @ ~2600MHz core, 2088MHz memory
I started with a fixed all-core CPU clock of 4.6GHz (where I noticed the apparent CPU limitation/reduced GPU load in this particular scene at 1440p ultra) and recorded the frame rate saw at 400MHz intervals, down to 3GHz:
4.6GHz = ~109 fps
4.2GHz = ~105 fps
3.8GHz = ~98 fps
3.4GHz = ~93 fps
3.0GHz = ~85 fps
GPU utilization fell from the mid 90s percent at 4.6GHz to the 70s around 3.4GHz, before creeping back up because the GPU wasn't loaded heavily enough to boost all the way.
Despite reported per-core CPU load generally being well below 100% most of the time, there was clearly a real CPU limitation, though it wasn't linear. Despite a 53% increase in CPU clock, there was only a 28% in frame rate. This correlates well with the CPU load being jittery...increasing CPU performance only shortens the time spent at full utilization, not at the lower utilization periods between the spikes.