I've seen "octopuses" and "platypuses", respectively, but I've also seen "octopi" and"platypi". Which is correct, and why?
Octopuses and platypuses would be correct. Octopi and platypi masquerade as Latin plurals on the false premise that the names are masculine Latin nouns of the second declension, and they are no such thing. The -us at the end is not analogous to the -us in fungus; rather it is part of the suffix -pus which is a Latinization of Greek ποῦς, foot. If you want to pluralize it in the true manner of its classical root, you would have to go with -podes. And that would be, frankly, a ridiculous extreme of pedantry.