I don't think this is as problematic as it sounds. I have used get/setVariable on objects that have changed locality without major issue (meaning the value last set to the car was still available after a locality change).
So, if Player A uses setVariable on an object that is local to him and then Player B uses getVariable on that same object to get its vaue, even if not local to him, he will get the same value that Player A would get. But, If Player A uses setVariable to change the value, Player B will have the incorrect value until he uses getVariable again.
So, if Player B needs to always have the most current value, you will need to make sure to use getVariable again before every critical point where the value is needed.
I hope that makes sense, here is an example:
1. Let's say we have a car named car1. Player A is the driver (car1 is local to him) and Player B is the passenger (car1 is not local to him). Let's also say we have a script that loops on each client that plays music like a car radio (not shown here). The music is activated by monitoring a global variable we have created called radioOn. If true it plays music, if false it doesn't. When the car is created (not shown here), it is empty and hence local to the server so setVariable is used to record the default state of the radio in car1 (false/off).
car1 setVariable ["car1RadioOn", false];
2. Now, when Player A & Player B get in car1, a Get In eventhandler (not shown here) gets the value of "car1RadioOn" from car1 to determine whether or not music should be played. This code runs on each client:
radioON = car1 getVariable "car1RadioOn";
3. Since "radioOn" was false, the global variable radioON will also be false for both clients and no music will be played for either player.
4. Now, let's say Player A decides to play some tunes
He runs a script on his client only that changes radioON to true and sets the same value to the vehicle.
radioOn = true;
car1 setVariable ["car1RadioOn", radioOn];
5. Now, since the loop script on Player B's client is only monitoring the global variable radioOn, he thinks the radio is still off and no music is played even though player A is grooving to the tunes. So, until Player B runs another instance of getVariable on car1 to get the latest value of "car1RadioOn" which is used to update radioOn, he will not hear any music.
So, in order to make sure that all clients have the same value, you just have to make sure to use getVariale on all clients at the right times.