When I try this code and send abcdefgh with MCS serial communicator, I get back ab followed by a bunch of garbage
Yes of course. Your interrupts should be as short and sweet as possible (ISR = KISS). You are doing time-intensive functions in the interrupt like writing to the LCD. Since you have your data in a SerialData buffer, you should move the LCDout part to your mainline routine. You should also consider taking the RCIF interrupt and exiting after saving to the array. Waiting in the ISR seems to me like a bad idea.

Another idea worth considering if you want to ruggedize your code is to use DT interrupts or ASM interrupts in place of the ON INTERRUPT of PBP which only branches to the ISR between PBP statements.