O vararg só pode ser o último argumento para evitar ambiguidades na sintaxe.
Dê uma olhada no método
public void umMetodo(String x, String ... qualquerCoisa)
{
}
Agora olha esse aqui:
public void umMetodo(String ... qualquerCoisa, String x)
{
}
Como o java saberia, no segundo caso, quando chegou a hora da variável x? Seria a última da lista?
Para evitar confusão (e talvez que também para manter a sintaxe parecida com o C++, o que é uma premissa desde o início do Java), o vararg ficou restrito ao último argumento.
Para o compilador não haveria mesmo muita diferença. No final das contas, tudo é substituído por arrays de objetos. Se fosse diferente, código com vararg não seria compatível com versões anteriores, e o código é.