Gameplay nerf it seems. Same reason why Koraidon isn't Fire type (?)
Water/Dragon = Broken typing with zero weaknesses in Gen 1.
The whole point of Dragons is that they were supposed to be super strong, but also extremely rare, hard to find and raise. Magikarp is one of the easiest Pokémon to obtain ever, and evolves at level 20.
A 540 BST Pokémon with no weaknesses that you can have at level 20. Even worse, a 580 BST Pokémon in Gen 1, because its base Sp. Attack was 100 before Gen 2's split. It would have easily overshadowed Dragonite in every way, which was meant to be 'the Dragon final boss', the strongest non-legendary Pokémon, and therefore the one that took the longest to reach its final stage.
They could have made Magikarp rarer and stronger, and/or give Gyarados more humble stats but make it Water/Dragon, but that would have been against the point of this line, which was basically 'useless and common fish that nobody wants evolves into extremely powerful creature'. The idea seemed like teaching players a lesson about not underestimating "garbage" Pokémon.
So there seemed to be a conflict of interests between the Magikarp line's concept, the role and purpose of Dragons, and gameplay balance. It would have been unreasonably strong from a gameplay point of view, so they made it Flying (a type that was completely useless offensively for it) basically just to give it a 4x weakness, and it was easy enough to justify lore-wise, as opposed to making it part Electric, Ground, or something else.