The problem is that varargs are a compile-time trick pulled off by the jdk. So, at runtime, a vararg (e.g. String... foo) is seen as an array of that type (e.g. String foo).
This means we can call vararg methods by passing an array, but it would be nice to pull off some uberspect magic to allow vararg methods to be called with a variable number of arguments, rather than a varying sized array. Much simpler that way, especially as Velocity's so-called "array" syntax actually creates an ArrayList, making the workaround for this that much trickier.
At first glance, this may be doable via some tweaks to MethodMap's isApplicable() and moreSpecific() methods.