Olá Thiago, tudo bem?
Na verdade, a necessidade de passar o Scanner scanner como argumento das funções salvar() e iniciar() se dá pelo fato de que essas funções precisam receber uma entrada de dados do usuário para executar suas respectivas tarefas.
Ao passar o Scanner scanner como argumento, você está permitindo que a função tenha acesso ao objeto Scanner que foi criado na main e, assim, possa utilizar esse objeto para receber a entrada de dados do usuário.
Caso você chame essas funções diretamente na main sem passar o Scanner scanner como argumento, você teria que criar um novo objeto Scanner dentro de cada função, o que não é uma boa prática de programação, já que estaríamos criando objetos desnecessários.
Espero ter esclarecido sua dúvida. Qualquer outra pergunta, é só perguntar!
Espero ter ajudado e bons estudos!