This is done for JMS compliance (JMS mandates it).
However there is a JIRA to relax JMS compliance so we can apply an optimisation like you mention:
BTW ObjectMessage is the slowest message type you can use (since it uses serialization).
We recommend people avoid ObjectMessage unless you *really* need to use it (i.e. you don't know the type of the object you're sending until runtime)