The Ramban (Bereshit 1:29) says the reason Noach was allowed to eat animals is because he maintained them in the Ark. If he would not have brought them into the Ark they would all have perished, so they owed their life to him. If so, why is he allowed to eat fish and not be like Adam who the Gemara says was not allowed to eat it? They were not in the Ark!
I forgot which mefaresh I saw this in, but I think it was in the Mikraos Gedolos.
He was allowed to eat fish, as well as the animals which spontaneously generate, so as not to cast jealousy among the creations.
Noach's upkeep of the animals merited that he could eat from them afterwards. They, in a sense, owed him a debt (Radak and Ramban as quote by Torah Ladaat on Behaalotcha 'Achilat Basar').
Ramban (Bereishit 7:23) explains more about the fate of the fish during the Mabul. He brings a gemara (Sanhedrin 108b) stating that the waters of the Mabul were boiling and should have killed the fish as well. He offers 2 answers to why they weren't killed, both along the lines of the fish fleeing to cooler waters in the depths and elsewhere. This perhaps strengthens the question above.
I heard an answer (source?) that the Ark provided cool waters so that the fish could survive. This would explain why Noach would be allowed to eat fish as well; they were directly saved by him and his ark. The fish were in a sense 'saved by the Ark' as much as the animals were, thus permitting him to eat from them as well.