I gen III Gyarados cannot learn any physical ice type moves, but can learn earthquake, which is useful against electric types and incredibly powerful. Vaporeon can learn ice beam and dig, to counter both weaknesses. I would choose vaporeon for that reason if you're just trying to get through the game. Movesets:
Gyarados(weak to rock and electric)
-Surf(May be special, but still powerful)/Rock Smash(Physical, but less damage)
-Earthquake(Dominate Electric types)
-Dragon Dance(Makes him a sweeper)
-Some other Move
Vaporeon(weak to grass and electric)
-Surf(power)
-Dig(Dominate Electric types)
-Ice Beam(Dominate Grass types)
-Some other Move