VIMs are not the actual culprit here, rather the Type Assertions (or lack thereof). A double with units will fail the Assert Floating-Point Assertion test. This may or may not be a bug. In the absence of a separate assertion for floats with units, it probably is.
The second assertion failure occurs in the Scalar to String.vim itself. A double, with or without units is a perfectly acceptable input for a timestamp format string. Unless you add an assertion in the timestamp case, there will be no broken wires, and voila, your DBL with units is interpreted as a timestamp. I see no reason not to Assert that value is a Timestamp in the Timestamp case, since you already preferentially decide that DBLs should be handled with Number to Fractional String.
A little Edwin Starr:
Units, huh, good God
What is it good for
Absolutely nothing, listen to me…