cljs.user=> (defn foo ([x] [:single x]) ([& xs] [:variadic xs]))
cljs.user=> (foo 1)
cljs.user=> (foo 1 2)
Note that the variadic call provides the wrong answer.
It appears that the right thing to do is not "make it work" but to reject the code as incorrect. See Clojure:
user=> (defn foo ([x] [:single x]) ([& xs] [:variadic xs]))
CompilerException java.lang.RuntimeException: Can't have fixed arity function with more params than variadic function, compiling:(NO_SOURCE_PATH:1:1)