This should be the last part. Unless I find some that I missed.
Eel comes from the Old English ael, which is just eel, not surprisingly. It comes from the Proto Germanic aelaz, but no one knows where it came from before that as there are no similar words in non-Germanic languages. It’s still more of an explanation than we’ve had for some of these words.
Carp—as in the fish, not like you’d carp about something orally, which is not related—showed up in the late fourteenth century from the Old French carpe and Vulgar Latin carpa. That’s actually thought to also be Germanic in origin, as there is a Gothic word, karpa, that’s a word for a fish. Pretty much the only thing they’re sure about is that it’s not related to the talk/speak version of the word.
Mackerel showed up in the fourteenth century from the Old French maquerel, yet another word with an unknown origin. Some people think that it’s from the classical Latin word macula, which means spot, because of the spots on the fish, but they aren’t sure, and weirdly enough there’s actually another Old French definition for maquerel where it means agent, broker, or pimp. That one might just be a homophone, but there’s also a theory that people named the fish because of its spawning habits or something.
Guppy is a relatively recent word, having shown up in 1918, when it became popular as an aquarium fish. It’s actually called that based off the man it was named for, Robert John Lechmere Guppy. So because that’s his name, that’s why we call it Guppy.
Now, perch has more than one definition, but a perch that something sits on or to perch on something is not related. The word for the fish first showed up in the fourteenth century as perche, from the Old French perche—and since a perch that something sits on is also spelled that way, the word confusion goes back at least that far. But that perch is from a Latin word for pole (pertica), while the fish is from the classical Latin perca, their word for the fish, and it’s not related to pertica in the slightest. It’s actually from the Greek perke, their word for perch, from perknos, spotted, from the Proto Indo European perk-, speckled or spotted. Definitely nothing to do with poles.
Tony Jebson’s page on the Origins of Old English