Once in your interrupt handler, interrupts are disabled, so you'll miss new data
that's arriving until you exit & re-enable the interrupt.

I don't think DEFINE HSER_CLROERR 1 is doing any good unless you use
HSERIN, so you would need to clear this manually.

Try reducing the time spent in your interrupt handler. I.E. place;

if BytesIn[ByteCnt] = eom then OutMsg in Main. Remove OutMsg from your int
handler, and let Main take care of displaying messages after eom.

Your interrupt handler should then be fast enough to keep up.
Code:
Receive:
    if rCIF then ' do you really need this? ' If RCIF=1 there's a new character in RCREG
        BytesIn[ByteCnt] = RCREG               ' Yes. Then store it in array
        ByteCnt = ByteCnt + 1                  ' Increment array index pointer 
    endif
    @ INT_ENABLE
It wouldn't hurt to allocate time on the sending device for the PIC to respond
with the complete message before sending more data after the eom marker.