A simple SDL2 program that calls SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER), and waits for SDL_CONTROLLERDEVICEADDED events to arrive, receives two events when my Xbox One X controller is attached. They have distinct SDL_JoystickGUID and SDL_JoystickID values and their names are:
"Xbox One S Controller"
"Xbox Wireless Controller"
If I connect both of them, I see double SDL_JOYBUTTONDOWN / SDL_JOYBUTTONUP and SDL_JOYAXISMOTION events. For the controller that's called "Xbox Wireless Controller", the actual SDL_GameControllerButton values are incorrect. They are correct for the "Xbox One S Controller" controller.
Note, if I change the program to use SDL_Init(SDL_INIT_GAMECONTROLLER), this double connection doesn't happen and the correct controller is identified.