Um caso é ao escrever funções que operam nos container-types definidos pela linguagem: slices, maps e channels.
Se uma função tiver parâmetros com esses tipos e o código da função não fizer nenhuma suposição específica sobre os tipos dos elementos, pode ser útil usar um type-parameter.
Outro caso em que os type-parameters podem ser úteis é para estruturas de dados de uso geral.
Uma estrutura de dados de propósito geral é algo como um slice ou um map, mas que não está embutido na linguagem, como uma linked-list ou uma árvore binária.
Para mais informações sobre quando usar generics, veja um artigo clicando aqui