This looks OK to me except for PIR1.5 = 0.

The USART receive interrupt flag bit can only be cleared by reading RCREG
until the buffer is empty. You're reading this only once in your int handler.

If you receive more than a single byte of data it can cause problems. I would
test the flag again before exiting this particular int handler sub-routine.

I don't think this is causing the problem you're seeing, but it could be one if
you're expecting PIR1.5 = 0 to clear the USART interrupt flag.

What happens if you remove the encoder, and replace it with a push-button
switch?

Does pressing the switch to simulate the encoder logic on the int0 input pin
work?

If it works then I would have to suspect an isolation problem.