It does not occur if -parallel is turned off.
I see that reconbatchjobs does "exec" on the commands sequentially in the order of the list, but it runs each in the background:
exec $JOB >> $LOG 2>&1 &
so I thought it might just be slightly possible that these two commands:
set cmd1 = (rm -f $hemi.white.$suffix)
set cmd2 = (ln -s $hemi.white.preaparc.$suffix $hemi.white.$suffix)
could end up in a race condition where the file is linked and then immediately removed if somehow the ln command is executed before the rm command.
However, I tried reproducing this behavior with a test script but the rm always happens before the ln.