I can only answer for Jovo v3; I haven’t used v4 yet and it may have better solutions:
As the podcast player example (and my skill on github) demonstrate, you can use this.isAlexaSkill and this.isGoogleAction to distinguish Alexa from Google Home (I’m not sure whether Google Assistant counts as the latter). Presumably there are similar flags for other platforms Jovo supports.
In fact – again, as existing code demonstrates – In Jovo3 you must use those, and issue calls against either this.$alexaSkill or this.$googleAction since the media responses are specific to the platform.
However, I disagree with you strongly about MP3’s on Android phones. That sounds like a problem with a specific phone. I have had a fairly substantial pile of MP3’s on my Androids for years, and have not encountered any such problems. MP3 is a lossy compression and does have some forms of distortion compared to a non-lossy form like FLAC (or some of the ogg codecs), but on a phone you really are not likely to ever hear the difference, especially if you’re listening on the go with background noise and using a cheap set of earbuds. (And for the record I’m at least partially trained as a sound engineer, though so far I’ve spent most of my time doing live reinforcement rather than in the studio.)
Never let the ideal drive out the good enough.