This is really a life-cycle/dependency issue. A destination that is deployed declaratively has a dependency on the ServerPeer, e.g.:
<mbean code="org.jboss.jms.server.destination.QueueService"
name="jboss.messaging.destination:service=Queue,name=DLQ"
xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
When you create the destination programmatically there dependency doesn't exist. However, I don't think it actually matters because when the ServerPeer shuts down I believe it will automatically clean up destinations which were created programmatically.