Well, I am not 100% sure about this, but I think this has nothing to do with varargs, but more like dynamic binding, generics and type erasure.
"Arrays in Java are covariant, but generics are not. In other words, String[] is a subtype of Object[], but Stack is not a subtype of Stack."
Source:
http://algs4.cs.princeton.edu/13stacks/
So to answer your question, this behavior is specified documented and expected.
In the book: 'Effective Java' Joshua Bloch explains it like this:
Arrays differ from generic types in two important ways. First, arrays are covariant. This scary-sounding word means simply that if Sub is a subtype of Super, then the array type Sub[] is a subtype of Super[]. Generics, by contrast, are invariant: for any two distinct types Type1 and Type2, List<Type1> is neither a subtype nor a supertype of List<Type2> [JLS, 4.10; Naftalin07, 2.5]. You might think this means that generics are deficient, but arguably it is arrays that are deficient.
And why am I talking about arrays you might ask? Well, because varargs will become arrays eventually.
"In past releases, a method that took an arbitrary number of values required you to create an array and put the values into the array prior to invoking the method."
"It is still true that multiple arguments must be passed in an array, but the varargs feature automates and hides the process."
Source:
https://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html