Compiling with -G significantly alters code generation.
With altered code generation, it’s impossible to make blanket predictions about register usage. In general, compiling with -G usually generates more code, and more code could use more registers. But none of those are absolutes. -G may not generate more code. And more code may not always be an accurate predictor of increased register usage.
There’s simply no absolute relationships, so expecting consistency is a flawed assumption.
It seems to me that you are picking random code generation statistics, putting them next to each other, and saying “what’s the relationship?” I can’t answer those questions, perhaps someone else can. I don’t think there is a direct relationship between register usage and stack usage.
Stack usage shouldn’t have an effect on occupancy like register usage or shared memory usage. Registers and shared memory are both shared resources provided by the SM (only). Stack is not a shared resource among threads (stack is separate to each thread) and the resources for stack are not limited to the SM.