The water analogy works because circuits are linear systems. Pretty much all linear systems can be modeled that way, if you're willing to contort things the right way.
Water analogy works well even with non-linear components like diodes (think one-way valve) and transistors (think valve controlled by water pressure from separate tube).