Hello,
That's an interesting observation!
I couldn't check your settings because credentials to the staging environment no longer work. But here are my thoughts about the setup.
Having the attributes set as not translatable may be problematic. Even if you have it working somehow, as soon as you start updating products they may run out of sync with the translations, because WPML does not handle it.
We are not seeing the issue in the staging because there is no update. Maybe in production there is an autosave or some automatic process that triggers a product update that then generates the problem.
My suggestion here is to check and try the following:
❌ Please make a full website backup before proceeding ❌
Normalize “Size” as a global attribute and lock in WPML settings
• Go to Products → Attributes and ensure Size exists as a global attribute (not added ad‑hoc on each product). If you’ve been using per‑product “custom attributes”, migrate to a global pa_size with terms S, M, L, ….  
• In WPML → Settings → Taxonomy Translation, set the Size taxonomy to Translatable. 
• In WPML → Taxonomy Translation, open the Size taxonomy and "translate" them, copying from the original.
• Go to WooCommerce → WooCommerce Multilingual & Multicurrency → Attributes, select Size, and run Synchronize attributes and update product variations. Wait for completion. 
• To confirm it works: 1. Edit one representative product in the default language, 2. add or remove an attribute, re‑save (Update), 3. then open its translation in the WPML Translation Editor and complete to 100%. 4. Check that the variation attribute is correct in both languages.
As I mention, I couldn't check your setting, but I did test in a fresh site to set the attribute as not translatable and as soon as I start editing the product the field run out of sync. I don't think this is a bug, if the attribute is not translatable WPML does not handle it.
Best Regards,
Otto