Olá, André!
Então, se não me engano isso é por conta de como é feito o addEventListener. E também pq sua função não precisa passar nenhum parâmetro (ao final dou exemplo disso). Se por acaso fosse chamar uma função em algum outro canto, você poderia chamar usando os parênteses normalmente.
mostraMensagem();
Esse é o corpo 'padrão' para click do addEventListener:
nomeDoAlvo.addEventListener("click", function(){});
Veja que você pode passar uma função ali logo após o 'click'. Então, se por acaso queira adicionar um console.log para quando clicarem no alvo, eu poderia fazer assim:
nomeDoAlvo.addEventListener("click", function(){
console.log("Opa! O alvo foi clicado!");
});
Se a função já existe, eu só preciso colocar o nome dela, ficando como você mesmo escreveu:
titulo.addEventListener("click", mostraMensagem);
E por fim, você só usaria os parênteses aqui, se fosse passar alguma informação para dentro da função. Aqui está um exemplo:
nomeDoAlvo.addEventListener( "click", somarNumeros(5, 10) );
O que está acontecendo nessa função?
Então, coloquei para quando clicar no alvo, ele chamar a função somarNumeros() que está recebendo os números 5 e 10 para fazer alguma coisa.
Deu pra entender? Se não, posso tentar melhorar o entendimento pra ti. Forte abraço!