Oi Guilherme, legal sua pergunta. Quando se utiliza os três pontos (...) isso indica que serão passados um número arbitrário de valores. Neste caso, o parâmetro declarado como "vararg", deve ser o último (mais a direita) na declaração do método (https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html#varargs)
O motivo disso é para que não haja possibilidade de ambiguidade na hora da interpretação dos parâmetros pelo compilador, no seu exemplo se fosse chamada a função "enviarEmailHTML" da forma abaixo o compilador poderia ter problemas para identificar quais são os valores que devem ser atribuídos ao array "emails":
enviarEmailHTML("teste1", "teste2", "teste3", "teste4")