A very quick, probably flawed investigation suggests the Chromium-family behaviour (meßagefactory → messagefactory) might be correct, and Firefox and Safari (meßagefactory → xn--meagefactory-m9a) incorrect: RFC 3492 (Punycode) defers to RFC 3491 (nameprep), which is a profile of RFC 3454 (stringprep), explicitly using its mapping tables B.1 and B.2, and table B.2 says to map ß to ss (“00DF; 0073 0073; Case map”).
I welcome correction or more detail from anyone more knowledgeable on the matter. It’s fiddly stuff and I haven’t dealt with this stuff very much, so I could very easily have missed a trick.