I made 15mins to go test this for my own peace of mind.
I tested on V4.6 and my green-screen test behaved as you described. Also, I noticed that the non-key-file-variable value was already 'lost' in the exit logic of the called LS (LS2) but that if I LSEXITed from the after-read-no-error logic of LS2 the variable was NOT lost. This suggests to me that the 'loss' of the value occurs somehow when ProIV handles "end-of-selected-records" in an LSUPDATE.
For me this is a clear-cut bug. But then I have no code that relies on it..

FWIW I tested an update function and there is NO loss of values when you use an LSCALL in a similar way to the screen example (ie. ProIV is not consistent about this).
Regards,
Richard