It's written in the Wikipedia page about od that:
Since it predates the Bourne shell, its existence causes an inconsistency in the
doloop syntax. Other loops and logical blocks are opened by the name, and closed by the reversed name, e.g.
if ... fiand
case ... esac, but
od's existence necessitates
do ... done.
Is this the reason why
do loops end with