You should only save context on chips with 2K or less program space.
The 16F690 has 4K.

When there's more than 2K, PBP has to do the context saving before jumping to the ISR.
At that point, the registers have been changed. So if you try to save context again, you're saving the changed values.

You always have to restore context, no matter how much program space there is.