I have found two possible explanations for this. Unfortunately, we are unlikely to ever know which - if either - is correct.
1: It's a Punctuation Error
According to W. Edward Farrison in his essay Horatio's Report to Hamlet (Modern Language Notes, June 1957) it is a printing mistake. He notes that in early editions of the play, the mark after "once" varied between a comma and a semicolon and suggests this is evidence of confusion among early scribes or proofreaders about how the line should be punctuated. Remember, early editions would have been copied from Shakespeare's messy scripts or even verbally.
He then goes on to point out that the line makes a whole lot more sense if punctuated differently, with a mark after "him" and before "once". As in:
I saw him; once he was a godly king
Remember, they are talking about Hamlet's father. So in this reading Horatio begins "I saw him" then realises that speaking impulsively to a disturbed friend about his father's ghost could be quite upsetting. So he pauses (the semicolon) and begins again by praising the dead king.
In this reading, there is no contradiction with Horatio's earlier statement of having seen the king in battle.
2: Shakespeare Didn't Care
In the notes to the 1984 Oxford Scholarly Edition of the play, George Richard Hibbard suggests that Shakespeare was not interested in minor discrepancies in Horatio's statements. He posits that audiences at the time would have been most unlikely to notice the exact contradiction the OP has noticed. Again, remember that few would have the advantage a modern-day reader has of being able to pore over a printed text.
He also points out that it is not the only contradiction Horatio makes. In the speech beginning
That can I.
At least, the whisper goes so. Our last king,
Whose image even but now appear'd to us,
Was, as you know, by Fortinbras of Norway,
Horatio demonstrates a rich knowledge of Danish history. Yet later we see this exchange:
Hamlet
The King doth wake to-night and takes his rouse,
Keeps wassail, and the swagg'ring upspring reels,
And, as he drains his draughts of Rhenish down,
The kettledrum and trumpet thus bray out
The triumph of his pledge.
Horatio.
Is it a custom?
Which seems an unlikey ignorance of custom for one so well-versed in knowledge about Denmark.
The reason for Shakespeare's disinterest is simply that Horatio is not a well-rounded character. His function in the play is, rather, a dramatic foil who can be called upon to advance the plot as and when required. Indeed this is sometimes obvious, such as when:
Hamlet.
What, ho, Horatio!
Enter Horatio.
Horatio.
Here, sweet lord, at your service.
Horatio simply appears out of nowhere when required.