Recentemente, tivemos uma discussão sobre se devemos usar enumes nativos no PostgreSQL ou confiar em colunas regulares de string com restrições de verificação.Como os valores reais são armazenados nas próprias tuplas, e não apenas uma referência aos valores, pode potencialmente ocupar muito espaço em disco.Embora as enumes sejam destinadas a conjuntos de valores estáticos, você pode adicionar valores ao tipo e renomear valores existentes.Mas as enumes também vêm com algumas limitações: por exemplo, você não pode remover um valor existente de uma enumeração.Uma vez que ele tiver esse bloqueio, ele executará uma tabela completa para migrar os dados e garantir que eles estão em conformidade com o novo tipo.
Fonte: https://making.close.com/posts/native-enums-or-check-constraints-in-postgresql