I believe the USB packet-forwarder also doesn’t support the TX_ACK packet, which is sent by the gateway after enqueuing a downlink. ChirpStack needs this information to know if a downlink was accepted by the gateway or not. If not (because of collision, …) it will stay in the queue.
This feature was added in v3.0.0 of the UDP Packet Forwarder.
I know upgrading the module costs money, but the USB packet-forwarder is really outdated. Support was dropped in v2.2.0 (2015-10-08) of the packet forwarder.
On the other hand, one could clone the packet-forwarder source and backport these protocol features
Or maybe Multitech could provide a custom packet-forwarder with these capabilites.