I don't think it's possible for someone to use a custom MuleMessage implementation but you are assuming that in the code DefaultMuleMessage.copyMessageProperties (since you have logic for a DefaultMuleMessage and a different logic for any other kind of message).
Or you add this change to the migration guide or you assume nobody it's using it's own implementation of DefaultMuleMessage and remove the unnecessary behaviour in DefaultMuleMessage.copyMessageProperties.