You're having the race condition problem of multiple USB devices connected with same ID. All say "Hi computer, I'm mouse XYZ" at computer startup, and the computer takes whichever mouse it hears first and gives it the first mouse number, the secound it hears with the next, etc. The best fix is to have the devices identify as different devices which can be a few ways. The next is to delay some of the devices so the computer sees the others first. The last is to set mame so it matters less on how the devices are numbered.
What are your spinners and TB? How are they connected to the PC?
1a. Buy different encoders for the different devices.
1b.Or get encoders that are numbered differently; example: the optiwiz can be
numbered 1 through 4. Either of these ways will fix the problem, but costs $$.
2. Delaying doesn't always mork, but can be easy to test if you already have a USB hub or two. It's harder with three devices, though. Plug one device directly into the PC, the other into a hub, the third into a hub plugged into the other hub. Before devices on hubs register, the hub has too first, so (hopefully) the devices on the hub will be delayed, and have higher numbers than devices plugged directly into the PC. Again, this usually helps, but can mis-number every once in a while. Worse, it sometimes doesn't delay long enough to be consistant at all.
3. Set up mame differently, but only works if you don't mind the TB working in spinner games and vice versa. Also, your spinners will need to be on different axes if you want to use them for different players at the same time. Disable the multiplemouse option, and map the player 2 dial to the spinner you changed to the Y axis for all games. All mouse devices will control the same X & Y axes all the time, though; if you ever want the TB and spinners to control different things at the same, this option will not work.