The implementation of _sub on text values produces a file with a fingerprint based on the fingerprint of the original text value. This fingerprint is not equivalent to one which would be created by writing the identical file through the NFS interface, or even one produced by the _sub command on a different text file (but which produces the same output file).
The '+' operator on text values has the same problem. "ab"+"c" produces the same value as "a"+"bc", but not the same fingerprint (if at least one of the operands started out as a file).
This isn't a functional problem, because the only guarantee Vesta gives you is that (fingerprint(a) == fingerprint(b)) => (a == b). The converse is not guaranteed (trivially because if file sizes exceed the deterministic fingerprinting threshold then the same file will get different fingerprints).
However it is counter-intuitive & nonoptimal, and thus seems like something that should be fixed eventually.