Fire is designed as a general damage dealer. Lots of high powered damage moves, with type advantage on a lot of types, but little in the way of non-damaging moves, and often Fire-types have narrow movepools.
Grass is designed as a technical counterpart. Grass has the ability to spread status around, has Leech Seed, Synthesis, and HP draining moves along with buffs and debuffs. It is also the type that theoretically makes maximum use of weather. It has a handful of decent damaging moves but often those have drawbacks or are limited to a small circle of Pokemon.
Water is designed as a utilitarian type. It has good damaging moves on both the physical and special sides, has a handful of handy non-damaging moves, and usually gets Ice Beam for good coverage.
Water lucks out for the same reason Clerics are overpowered in DnD - they can do everything well.