Os ponteiros podem ser mais rápidos e gerar menos sobrecarga, tanto na estrutura de dados quanto na redução da pegada de execução do programa. (Observe a palavra 'pode'.)
Em geral, a regra é que, se você alocou um recurso, executando sua própria alocação ou fazendo com que algo o faça em seu nome, é seu trabalho liberá-lo quando terminar.
O ônus de fazer isso é colocar a responsabilidade de volta no desenvolvedor, em vez de fazer com que o tempo de execução o faça. Isso tem mais algumas vantagens, pois as coisas podem durar mais tempo, atravessar fronteiras, ser descartadas em momentos mais oportunos ou não precisar carregar o peso de um coletor de lixo.
Em casos exóticos, geralmente envolvendo exceções e escopo, existem alguns casos extremos que exigem que você tenha um pouco mais de cuidado se o código que a limpeza for evitado. Realisticamente, esses casos podem ser projetados ao redor. Vivemos sem código gerenciado por muitas décadas.
Muitas vezes, o que torna os ponteiros "difíceis" simplesmente não é entender o que está acontecendo no nível do hardware. Não é nada além de indireção.
Os ponteiros oferecem muito mais acesso bruto, e isso pode ser muito útil, inteligente ou necessário. Você pode apontar para qualquer lugar e tratá-lo praticamente como qualquer coisa. Se você usa seus poderes divinos para o bem, é muito, muito bom.
O lado contrário é geralmente um desperdício, esquecendo-se de liberar algo, ou liberando-o mais de uma vez, ou referenciando-se a algo depois que ele foi lançado, ou referenciando algo quando você não está apontando para lugar nenhum. Essas coisas geralmente resultam em falhas espetaculares e, para ser honesto, geralmente são indicativas de que você tem um problema de lógica, em vez de ponteiros serem frágeis.
Se você é um desenvolvedor sólido, usar ponteiros não deve ser mais problemático do que qualquer outra estrutura de dados. Novamente, não é ciência de foguetes, e as pessoas fizeram isso por décadas sem sequer piscar um olho. É apenas ensinado menos completamente nos dias de hoje.
Tudo isso dito, a menos que você precise de indicadores, os casos de conveinência e exoíticas que uma boa coleta de lixo fornece tornam o trabalho em um ambiente gerenciado muito mais agradável. É ótimo poder recuperar um pouco de memória, usá-lo e abandoná-lo, sabendo que, algum tempo depois, pode ser descartado, se fizer sentido. Isso é um pouco menos de código da parte do codificador, em troca de um tempo de execução que faz algum levantamento extra.