The issue is with the Windows Audio Endpoint Builder Service, and not Sonar.
On every start-up, the WAEB service iterates through the system's audio devices in PCI/USB order (The root USB hubs are located on the PCI bus). These devices are then listed in that order by the WAEB service. If you do not change ports or power cycle hardware, the order will remain the same.
Shutting a device off, the WAEB service removes it from the device list.
Turning it back on, the WAEB sticks it at the end of the device list.
Sonar listens for when the list changes and re-reads it.
Since the service doesn't create an identifier for a device that stays the same between restarts, Sonar cannot know if it had seen the device some time before, to put it back into the original order.
The second problem is that a piece of hardware can have several devices associated with it (audio, several midi ports, etc). Depending on how the drivers are written, there may be no consistent way the WAEB service orders them when you power cycle a device on a running system.
That being said, you can cheat by restarting the Windows Audio Service (it depends on the WAEB) and the WAEB. This will force Windows to rescan all the multimedia devices on your system, ordering them by PCI/USB address as it does when the system boots.