I strongly suspect that this is because the game tracks the fish in the mouth if the move is successfully executed, but checks this on the first turn. So you Dive, it sees that you've successfully dived underwater, and adds the fish.
I would assume, therefore, that Cramorant also gets the fish in its mouth if it hits itself in Confusion on the second turn, or it fails if the second turn fails after Dive is called by a choiced Metronome user.
To test: if Cramorant dives underwater and is subsequently hit by a Pokemon with No Guard, does the fish recoil trigger immediately? Does it make a difference whether or not the triggering hit KOs Cramorant? What if Surf is used while Cromorant is underwater?