I thought that restarting both when the vehicle crosses a sim boundary would put them both in sync. It turns out that stopping and restarting a looping animation is more difficult that it sounds.
I tried llStopAnimation(A) followed by llStartAnimation(A). The animation continued looping like I'd done nothing. I tried adding a short llSleep() between the stop and start. No effect. I tried briefly starting and stopping a different animation between the stop and start. That interestingly did nothing as well.
What finally worked was a combination of the two.
llSleep( 0.1 );
I suspect it's related to a change intended to prevent griefing via bombing someone's viewer with animations.