Not long after posting, I found a great example on the mailing list of extending the Gambit reader, which is exactly what I needed : http://permalink.gmane.org/gmane.lisp.scheme.gambit/487

By changing the handler for #\[ from ##read-vector-or-list to my custom read-vector-literal form, I can construct exactly the forms I want!