You can't change from one vehicle to another without exiting the first therefor there is no reason why OnPlayerStateChange should detect that (without exterior help from the script)
If you force the player to change vehicle with PutPlayerInVehicle you are doing it clearly scriptwise and you know when that is happening, thus you don't need a native callback for that, you can create your own