I just did this with an 18F45K80
Code:
' device = 18F45K80

topline var byte [16]  'top part of the screen array
botline var byte [16] 'bottom part of screen

ix var byte
ct var byte
cb var byte

' clear arrays
for ix = 0 to 15
    topline[ix] = 0
    botline[ix] = 0
next ix

' read array data
arraywrite topline,["0123456789ABCDEF"]
arraywrite botline,["0123456789ABCDEF"]

ix = 0

'read array char by char
for ix = 0 to 15
    ct = topline[ix]
    cb = botline[ix]
next ix

ix = 0
When it gets to the end, topline and botline arrays are exactly as specified... each is 16 chars "0"-"F"
Reading the arrays byte by byte also does as expected.
I even added a third array of 16 chars... works too.

Your problem is elsewhere... not with the arrays themselves.