Basically, when you rotate an object in one direction, you are actually rotating two axis together around the third axis - they are always linked (it’s physics), so when you twist one axis it will always rotate the other two.
The camera sees along the X axis (of the camera object), and when you push your mouse up to look up, it’s actually rotating both the X & Z axis’ around the Y axis. Now the X axis (where the camera looks) is tilting up; and because the 3 are linked, it means the Z axis was also rotated; and instead of pointing straight up, it’s now tilted backwards.
The wonkyness comes in when you try to rotate around one of the other two axis that are now ‘tilted’.
I’m sure it’s possible to use math to fix the problem - but I’m not good at that stuff, so instead a gimbal is an easy way to fix the issue.
By using the Gimbal you are essentially making a second set of axis - one for the Gimbal, and another for the Spring Arm.
The Gimbal only ever rotates around 1 axis, so it never has a chance to end up ‘wonky’.
Same deal for the Spring Arm.
Hopefully that makes sense and helps someone.
*Edit fixed some typos