As you suggested, hiding/disabling the character when you enter the car and then unhiding it when you exit could provide better performance for your project than attempting to destroy and respawn the character, depending on how long the character is inactive/hidden and how much it does while hidden.
Something else you can test would be to have the character print the controller they are using at spawn. If you’re able to control the character before getting into the car but are unable to after exiting, it sounds like the appropriate player controller is not being assigned when the character respawns. This can also be solved with the hide/unhide method as the character should not lose his controller.