Nun, ich bin nicht 100% sicher, aber ich denke, das nichts mit varargs zu tun hat, sondern eher wie ein dynamisches Bindung, Generika und Typ Löschung.
"Arrays in Java sind kovariant, aber Generics nicht. Mit anderen Worten, String [] ist ein Subtyp von Object [], aber Stack ist kein Subtyp von Stack."
Quelle: http://algs4.cs.princeton.edu/13stacks/
So Ihre Frage zu beantworten, dieses Verhalten dokumentiert angegeben wird und erwartet.
In dem Buch: 'Effective Java' Joshua Bloch erklärt es wie folgt aus:
Arrays von generischen Typen in zwei wichtigen Punkten unterscheiden. Erstens sind Arrays kovariant. Dieses unheimlich klingende Wort bedeutet einfach, dass, wenn Sub ein Untertyp von Super ist, der Array-Typ Sub [] ein Subtyp von Super [] ist. Generika dagegen sind invariant: für zwei verschiedene Typen Typ1 und Typ2 ist die Liste <Typ1> weder ein Subtyp noch ein Supertyp der Liste <Typ2> [JLS, 4.10; Naftalin07, 2.5]. Man könnte denken, dass dies bedeutet, dass Generika mangelhaft sind, aber wohl Arrays, die defizitär sind.
Und warum spreche ich über Arrays, die Sie fragen könnten? Nun, weil Varargs irgendwann zu Arrays werden.
"In früheren Versionen musste eine Methode, die eine beliebige Anzahl von Werten annahm, ein Array erstellen und die Werte vor dem Aufruf der Methode in das Array schreiben."
"Es ist immer noch wahr, dass mehrere Argumente in einem Array übergeben werden müssen, aber die Varargs-Funktion automatisiert und verbirgt den Prozess."
Quelle: https://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html
Ich würde erwarten, dass die Antwort hier lautet "alle Regeln der Typinferenz in ihrer unergründlichen Komplexität, die immer zumindest einige Unterschiede zu jedem Compiler haben, den ich ausprobiert habe." –
Wahrscheinlich: http://docs.oracle.com/javase/specs/jls/se8/html/jls-18.html#jls-18.5.1 und folgende. – assylias