DFSORT can't distinguish between the trailing blanks you had in the original VB input data set and the trailing blanks DFSORT padded the short FB records with. A blank is a blank is a blank.
Without seeing your JCL, control statements and input records, it's hard to know what you're trying to do, but I'll venture a guess, that if you use VLFILL=C'*' for the OUTFIL VTOF statement and VLTRIM=C'*' for the OUTFIL FTOV statements, you'll get your trailing blanks back. Just make sure that the '*' or whatever character (e.g. =, $, or whatever) you use for VLFILL and VLTRIM does not occur at the end of any input record (obviously, you can't use blank for the character since that does occur at the end of records).