When Local Control is set to ALL OFF, transmitted program change commands must be routed back into the synth in order for the program to actually change. So, my guess would be that when this occurs for you, you don't have the transmitted MIDI looping back into the synth.
If you used MIDI monitoring software, you can see that program change commands are transmitted when Local Control is OFF. If this is not occurring for you, please check that the MIDI Program Send global is set to ON.