I think this amounts to a design decision then.
A vector of NIL can not actually hold an object of type character or anything that would reasonably construed as a sensible subtype of character envisioned by the myriad proposals on characters. 'extended-character' was supposed to augment 'base-char', not diminish it. A string must be able to hold elements from a repertoire that includes at least standard-char, which NIL does not, and then base-char is more than that, ... up to 'character' which is "top" of the sub-lattice.
In a historical context, the debate was about acknowledging existence of points in the type lattice between no-bits-no-font-attributes-minimal and everything-plus-bits-and-fonts; not about a screwy empty set of characters.
I'll grant that wishful thinking on my part does not make it so and that the current approach is legitimate.
That said, something like my patch is still correct except that zero-length (vector nil) should print as two empty quotes, and positive length vectors should print using the mechanism of the patch, which is essentially #.(make-array)