Why do most languages allow variables to mutate, rather than forcing us to write in static single assignment style?
Because it is useful; the imprecise name still communicates something of value to both parties: that variable foo and variable foo', although not identical, are joined by a common purpose.
Because the concept of river describes a body of water in flow starting from and passing through specific geographical locations.
Those all remain, even if the water at any point X of the river changes...
That's what motivated Plato and Kant to come up with their philosophical responses to the flux. One with eternal forms and the other with categories of thought.
And we are free to disregard small changes, like we do everywhere.
I'm aware of Heraclitus' thought (and other pre-socratics, Aristotle, Plato, Kant, Hegel, and many others besides) but it's not a binding observation (that one should fell compelled to respond by resolving some great paradox).
"Yeah, the river undergoes small changes all the time, and bigger changes from time to time. Still enough remains common for us that we still don't care and will call it by the same name, what are you gonna do about it?" is a nice common sense response...
Maybe because the river bed is more or less still the same location. Location is important for mapping the environment.