(Isso se baseia amplamente em A Git Horror Story: Integridade do repositório com compromissos assinados - uma leitura muito boa e mais informações do que eu poderia colocar em uma resposta.)
Existem várias maneiras pelas quais um repositório git pode ser comprometido (isso não é uma falha de segurança, apenas um fato da vida - não se deve evitar o uso do git por causa disso). Por exemplo, alguém pode ter enviado para o seu repositório alegando ser você. Ou, nesse caso, alguém poderia ter enviado para o repositório de alguém que afirma ser você (alguém pode enviar para o próprio repositório que afirma ser você também). Isso é apenas parte da vida em um DVCS.
Apenas como exemplo:
$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com
Lá, mudei minha configuração do git para fingir que sou você. E agora eu posso me comprometer e deixar esses comprometimentos entrarem na construção da produção, e parece que você fez isso.
Com a assinatura dos commits (e tags), pode-se provar que determinados commits e tags foram de você (e coisas que não foram assinadas não deveriam ter entrado na construção da produção). Essa é realmente a chave de tudo: assinando confirmações, você disse que é seu trabalho.
O aspecto "seu trabalho" é particularmente importante no kernel do linux (e, portanto, no git) que é ocasionalmente atingido por ações de direitos autorais. Ao assinar confirmações, você diz que tem direito ao software - ele rastreia a origem. Pode ser que você não tenha acesso à fonte que está sendo reivindicada como direitos autorais e a reivindicação é infundada. Pode ser que a empresa tenha esquecido que você estava trabalhando para eles há alguns anos e, sob a direção deles, adicionou material ao kernel, ou qualquer outra coisa.
Há algum debate sobre se todo commit deve ser assinado. Da assinatura do GPG para o git commit? (em '09), Linus escreveu:
Assinar cada confirmação é totalmente estúpido. Significa apenas que você a automatiza e faz com que a assinatura valha menos. Ele também não agrega nenhum valor real, já que, da maneira como a cadeia DAG git do SHA1 funciona, você só precisa de uma assinatura para tornar todos os commits acessíveis a partir daquele que são efetivamente cobertos por esse. Portanto, assinar cada confirmação está simplesmente sem entender.
Muito mais sobre os pensamentos sobre o login no git também podem ser lidos lá.
Dito isto, ele chegou ao git de qualquer maneira.
Parece haver um consenso majoritário de que a assinatura de confirmações é desnecessária, mas a assinatura de tags é muito boa. O post no blog sugere que alguém assine tudo de qualquer maneira. Como eu disse, há um debate sobre se todo commit é necessário ou não.
A chave para o debate "assine todos os commit" provavelmente tem a ver com o fluxo de trabalho que você usa. A maioria das pessoas faz muitos commits em seus repositórios locais e depois pressiona esse conjunto. Deve ser suficiente marcar a coleção final (supondo que você tenha certeza de que todas as alterações estão corretas). Se você estiver trabalhando em um ambiente em que muitas confirmações únicas estão sendo movimentadas, a distinção entre uma marca e uma confirmação se torna menos ... distinta - e as confirmações de assinatura podem se tornar mais úteis.