Is 'po vodě' is literally true? As I know the word 'po' is 'for, after' as in 'po obědě' (after lunch). If he physically walks on the surface of water, isn't only 'na vodě' the grammatically correct answer?
"Po" is often used for movement where "na" would be used in a static meaning, like standing. Therefore "On stojí na vodě", but "On chodí po vodě". Or "Ona stojí na ulici", "Ona jde po ulici". "Moucha sedí na okně", "Moucha leze po okně".