Clojure has to do the same thing to interface with Java: https://clojure.github.io/clojure/javadoc/clojure/lang/IFn.h...
This is likely for JIT performance, with virtual method lookup. C# does the same thing with string.Format - https://docs.microsoft.com/en-us/dotnet/api/system.string.fo...