The standard deletion of the sales order happens when you invoice from a sales order and the system checks that there is no remaining line with a balance. You are creating one invoice and bringing in shipments, by doing it this way the system is bringing in the shipments, writing the invoiced amount back upon processing the invoice, but the system has no way of knowing if the shipments you have brought in are from every line, it cannot check this as you are not creating the invoice directly from the order.
Essentially the program works different ways depending upon your processing and what it knows when processing, which is why you have to adpat. There is nothing wrong, it is how the system works in your instance. If you want it to delete a fully invoiced order in a combined shipment environment you will need to speak to a developer and get teh system changed.