I think it's related to rendering order, z-buffer, or simply that the water is rendered as a "blanket" surface with no transparency, and what we interpret as transparency (seabed visible at shallows) is actually included to the water surface shaders, rather than being actually a different surface at different depth.
It's computatively cheaper, that's for sure. If the surface were transparent you would have to make up its colour based on environmental reflections; if you don't need to take that into account you can give the water a standard diffuse colour defined in the map data files, I believe. You would also need to take the water's opacity into account...
With modern hardware, it would be doable, not sure why even newer games don't do it (or they might do it, but the effect may not be noticeable).