Hi,
your problem is that you think that UartRxCallBack() is run when the uart has received all data.
But the callback is run as soon as some data (even only 1 byte) is received.
I suppose that the callback is run twice (first time after the first byte, second time after the second byte).
If the callback is run, and only 1 byte is in the buffer I think that the first getbyte() get the true data, but the second get nothing (buffer empty).
So the second time the callback is called (when the second byte arrived) the data in UartByte[0] is overwritten with the second byte you sent.
All this is IMHO, I never used zigbee, so I'm not sure about the behaviour of this processor, but usually the behaviour of uart is something like this.
Bye Jack