I tried upgrading my RX 550 4GB to a 580 8GB and performance was the same. 1440p resolution and logs show its using the ultra profile, but I get the same 30fps in an activity. I tried a 6500XT as well and got better FPS at 40+ but not great. All with a Ryzen 5500. I used some monitoring tools to record metrics and noticed really odd GPU utilization behavior. Jumping from 100 → 3 → 65 → 100 → 4 → 68 → 100% and doing that throughout an activity. Same results with both the 580 and 6500. I’m using the latest drivers.
Also, when you are assessing CPU utilization, you need to pay attention to whether a single core is maxed out. In Zwift it’s normal for most of the CPU to be unused while hammering one core to death. IOW a 6 core CPU with 17% utilization overall could be at the limit.
One thing you can do to get a little performance back is disable the Video Screenshots feature in Zwift if that’s turned on. It should be on by default with that CPU.