I don't know that it "has to", as the last overload has variadic arguments. (Caution, I'm not a Java expert).
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...