The ISR will do the same thing over and over and over again to no real effect after the first one.
when no interrupt occurs and joystick is either idle or tilted
Yes.
a new value is set to xx_new,yy_new and the tank will move as desired.
so as you said:-
but i get strange results - the motors are permanently rotating backwards
That means you are not reading the new value of a joystick command or you are not changing the command from last time.
How about using the ISR to clear the value of xx_old,yy_old to a value that will never be received. Declare these values as volatile.