This problem isn't concerning how to get Xbox 360 controllers working in Unity, its more about player indexing. As of right now, our game is a 4 player cooperative platformer and we need to have players assigned to specific controllers, so we use a playerIndex variable which is just set on the player prefabs. In the code it is hooked up to get input from certain handles (from the input manager) and they are named like Horizontal1 Vertical1 (for player 1) and for some reason Unity seems to assign random indexes to the inputs and the one that should be reading for controller 3 is reading for controller 1 and vice-versa. Let me know if I'm not clear enough.
You could make an user input configuration screen before the start of your game where the user has to press a button to assign his joystick as his input device. (Input.GetJoystickNames)