The rules for the UNSTRING statement state that the behavior of unstringing a value into a receiving field will be the same as if a MOVE were done between the sending literal and the receiving field and this is what is happening in both NX and VC.
The problem is that you are moving invalid data (space) into a numeric field.
The resultant field when it is defined as PIC 9 will contain a space character X"20" in both NX and VC. The difference is that in NX the DISPLAY statement seems to output a "0" character and in VC the DISPLAY outputs a " ". The behavior in VC although different appears to be more correct to me.
If you are expecting that the UNSTRING will convert a space into a "0" when it is moved to a numeric field then you might try to turn on directive SPZERO and you might get the expected behavior you desire.