Você está pensando demais sobre o problema. Você quer usar uma lista (matriz ou algum outro iterável) para seus argumentos quando é provável que o consumidor de sua função já tenha coisas em uma lista. Você deseja usar argumentos variáveis quando quiser chamar uma função com um número diferente de argumentos.
Um exemplo clássico de quando você deve usar varargs é o printf()
de C. Usar varargs faz sentido aqui porque, no caso geral, não há razão para colocar um monte de valores arbitrários em uma lista apenas para imprimir algo. Um bom exemplo de onde você provavelmente deseja uma lista é um sum()
, em que você provavelmente está operando com vários valores relacionados que provavelmente seriam armazenados juntos.
Não é algo que você precisa ser dogmático ou ter regras para. Use algum bom senso e escreva códigos que as pessoas possam seguir & não te força a saltar através de arcos arbitrários.