Olá Ricardo!
Quando colocamos parênteses na função estamos invocando ela, chamando ela para ser executada. Quando você faz assim:
verifica();
Você está pedindo para o navegador executar todas as instruções dentro da função. Faça um teste. Vá no console do navegador e digita verifica(). Ele executa a função.
Agora, no código abaixo:
button.onclick = verifica;
Não estamos executando a função, mas sim guardando todas as suas instruções "dentro" do botão, e essas instruções serão executadas somente no clique do botão. O verifica sem parênteses contém as instruções da função e não a execução da mesma, entendeu a diferença? Faça o teste. Vá no console e digite verifica; para ver o que ele te mostra. Ele mostra o que está dentro da função, o que ela contém, o que fica guardado "dentro" do botão e não executa a função como acontece quando você digita verifica();.
Abraços e sucesso nos estudos!