I found the problem.

I am using assembly interrupts that reserve a location in each bank for the wsave register. This effectively limits an array size to 255 bytes since the array can't cross this reserved register.

Luckily this processor has a special stack that will store the W, STATUS, and BSR registers automatically and then automatically restore them if a "fast" retfie command is used. This removes the requirement to reserve a memory location in each bank for the wsave register. Using this method works as advertised. This will only work if high priority interrupts are not used, which was the case in my code.