Currently there does exist a simple way to create trees (reify), but its applicability is limited to static templates with holes having statically known types. However when writing macros, there's frequently a need in something more sophisticated.
This is an open research question, and there are several possible approaches to solving this problem:
Compiling this code will signalize about cross-stage evaluation. This is justified, because the value of baos (as a free variable) will be captured by reification. But this value is only available at runtime, while splice in question needs to work at compile-time.
This is all reasonable and stuff from the staging point of view, but it doesn't really matter for the programmer who just wants to quasiquote.