I recently noticed this, myself.
Looking at lchat, up arrow (38) and down arrow (40) cycle through chat history.
Looking at mchat, ditto for those keys, and left arrow (37) and right arrow( 39) move among tabs.
Now, looking at ChatFrame.ChatEntryListener, I see code to make KeyEvent.VK_UP and KeyEvent.VK_DOWN to do stuff with the chat history. I don't know why that is not working for me.
Which is to say, this feature should already be there, but isn't working for some people - including you and me.
I'll look at it.