OK - so this is working exactly as expected.
Here’s what’s happening.
When you perform step 4 above (Click on another variation - the knob will stay at 0) and then step 5 (Go back to the first variation), that second variation is remembering that the value of the widget is 0
So when you attach the Transpose parameter to the widget in the original variation (at which point the widget in that variation jumps to the correct value, representing zero transpose) and then you switch to the other variation, that variation, which remembered that the widget should be at zero, immediately switches the knob to zero which of course then sets the transpose to -127
In other words, every time you leave a variation, Gig Performer captures the current widget values so that it can reset them back when you return to that variation.