Code:
'Code at device A, PIC18F4550
SendData:
   pause 5
   SEROUT2 PORTB.7,32,[STR RFID_IN\7]    
goto SendData
You're only allowing device B 5ms between transfers to receive the data and display it.
If device B is not finished and sitting back at the SERIN2 statement before device A does another transmission it will fail.
Try increasing the 'pause 5' to 'pause 500' and see if things get better.

You might also have to break the single SEROUT2 statement into something a little slower, like sending the RFID_IN array data a byte at a time with a pause in between the bytes to allow device B time to receive, save it, and be ready for the next byte. As I mentioned before, you're using a software SERIN2 on device B which is VERY timing-dependent and prone to failure. A hardware UART is much better suited for this, especially for receiving data.

You could also be having issues with osc accuracy between the two... on each end send a 'U' (hex 55) and measure the bit timing. At 19200 baud each bit should be 520us +/-15us, give or take (about 3%).

My bet would be on one of the first two above.