That method creates a String with the encoding that it has been told is present. The fact that we are giving it the *wrong* encoding, for whatever reason, does not make that implementation incorrect.
I would be interested to find out more about how ICU4J determines the character set, especially if we can see that it is guaranteed to get it right every time.
Kev