I had the same issue where all of my controllers (4) showed as USB Joystick. I spent a lot of time trying to prevent Windows from changing the instance ID's but was fruitless. I switched to using SharpDX (Directinput) so I could poll for the devices and then create a custom ctrlr file that Mame could use.
I built a quick console app that allows for a remap and the plan is to add this as an option (Platform System, for example) within BigBox that I can launch to reconfig (If needed) without needing to break out the keyboard.
Still a work in progress but so far the testing works. I can disconnect/reconnect in random order (Along with the powered USB hub) and then create a config file that maps correctly.
This is the output and I use this .cfg file when loading Mame (Above screenshot is pointing at different controllers, just as an FYI)
<mameconfig version='10'>
<system name='default'>
<input>
<mapdevice device='fcfc7af0-c120-11e9-8003-444553540000' controller='JOYCODE_1' />
<mapdevice device='f223fdb0-c120-11e9-8001-444553540000' controller='JOYCODE_2' />
<mapdevice device='fadea400-c120-11e9-8002-444553540000' controller='JOYCODE_3' />
<mapdevice device='ff1fd020-c120-11e9-8004-444553540000' controller='JOYCODE_4' />
</input>
</system>
</mameconfig>