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.
Platypuses and octopuses are technically correct because both are not latin words although either is fine. On the other hand, there are some English words that do have correct plurals that end with -i such as hippopotami (hippopotimus) and radii (radius).