OK, ich habe eine Lösung gefunden. Es ist nicht wirklich ideal, aber es bekommt das gewünschte Verhalten.
Zuerst habe ich den vollständigen Status meiner Tastaturkonfiguration mit Dump gesichert
$ xkbcomp $DISPLAY - > now.xkb
Dann habe ich die Zeilen gefunden
interpret Overlay1_Enable+AnyOfOrNone(all) { action= LockControls(controls=Overlay1); };
und änderte es in
interpret Overlay1_Enable+AnyOfOrNone(all) { action= SetControls(controls=Overlay1); };
which prevents the modifier from being "sticky" ie it only applies while you are holding the key down.
Then I took the key that used to be my ISO_Level5_Shift:
key <TAB> { type= "ONE_LEVEL", symbols[Group1]= [ ISO_Level5_Shift ] };
and changed it to Overlay1_Enable:
key <TAB> { type= "ONE_LEVEL", symbols[Group1]= [ Overlay1_Enable ] };
Then for every key where I wanted the change to take effect, I added an overlay definition:
key <AD07> { type= "EIGHT_LEVEL", overlay1= <PGUP>, symbols[Group1]= [ g, G, asterisk, G, Prior, G, Greek_gamma, Greek_GAMMA ] };
Then a re-applied the whole thing with
$ xkbcomp now.xkb $DISPLAY
Useful documentation: