eirk I would be in favor of implementing this (or some kind of equally sophisticated) algorithm for starters. Having a toggle in the settings is not good UX for anybody.
However, I disagree with how Firefox/Chrome handle this: they both have some kind of decision tree where ultimately you end up with "show the actual characters" or "show punycode version". I'd argue the latter should never be a choice. A punycode version is non-sense to the average user and can only cause confusion.
Punycode after all is just some internal technical representation of characters. Yes it happens to be quite printable, but to a human "xn--9ckk2d5c" is equally meaningless as if I would just list codepoints "U+30C3U+30C8U+30DCU+30ED" or any other kind of gibberish.
So why show anything in the first place? Chrome/Firefox go through an algorithm to kinda figure out "is this a proper domain name or just someone trying to abuse the abundance of characters in Unicode?", but if that algorithm ascertains that it is actually probably abuse they still just load the website right up. Just, don't do that and be done. And for all the other IDN domains that pass all the safety checks, treat them right and show their proper name in the URL bar.
But: never show punycode to the user (except maybe inside some developer debug tool).