Depending on what you need on your competitive team, either Pokemon can be very useful.
Vaporeon is a great tank and wall, countering many sweepers in the meta. It has access to moves like acid armor and haze, to troll the other team's setup.
Gyrados, however, is very useful as a bulky physical sweeper, utilizing dragon dance to setup and begin sweeping teams. It also gained a mega evolution, gaining the dark typing and mold breaker, giving STAB for moves like crunch. Gyrados is also very viable as a tank, as it uses great defense and special defense stats, especially in mega form.
All in all, they are both very good Pokemon, but I like Gyrados, somewhat due to personal bias, but I think it is just a more versatile water type, being able to be a bulky sweeper or defensive wall.