How do I replace a logo image that’s hard-coded into a plugin’s logo.php file?

The plugin looks like it’s specific to the site, and not in danger of being updated by WordPress, so you can change the plugin’s code without much fear of losing it. Either option you mentioned will be fine, though I recommend the second option, to keep things together.

Typically the theme would be in charge of appearances: not sure why the plugin is handling it.