This was an annoying thing to fix. It seems that fixed foveated rendering gets reset to 0 every time you put the headset back on like you said. However, even if you set the value back to where it was before, it doesn't change. This seems to be due to a badly cached/de-synced value that refuses to update if you set the FFR back to the same value it was. So, what you ACTUALLY have to do is, set the FFR to your old value + 1, then set it to that value - 1 to get back to where you were at.
I'm working in Unity, so I've been running this code in a function every time I put the headset back on (the input focus acquired event) with this binding:
OVRManager.InputFocusAcquired += InputFocusAquired;
My code in that function looks roughly like this:
int FixedFoveatedRenderingLevel = GameUserSettings.GetIntegerValue("FFRLevel") + 1; //set to +1 for hacky solution for now
OVRManager.FixedFoveatedRenderingLevel FFR = (OVRManager.FixedFoveatedRenderingLevel)FixedFoveatedRenderingLevel;
OVRManager.fixedFoveatedRenderingLevel = FFR;
int FixedFoveatedRenderingLevel2 = GameUserSettings.GetIntegerValue("FFRLevel");
OVRManager.FixedFoveatedRenderingLevel FFR2 = (OVRManager.FixedFoveatedRenderingLevel)FixedFoveatedRenderingLevel2;
OVRManager.fixedFoveatedRenderingLevel = FFR2;
Let's hope this gets resolved soon, it would be nice to not have to do this!