Isso mesmo, maniero. Nos casos de atributos que representam o momento exato (como data de criação do post) eu sempre uso epoch number. Daí realmente não há problemas e a data sempre será exibida corretamente no navegador do usuário, não importando o timezone. A armadilha mesmo é em datas onde o timezone não pode alterar a exibição, como a data de nascimento.
Eu deixei de usar tipos nativos de bancos de dados (date, timestamp, timestampz, etc), pois alguns têm e outros não, e eventualmente se você está em um ambiente de microsserviços onde cada um usa um banco diferente (incluindo ai bancos não relacionais), isso pode ser um problema. Sem contar questões de performance (campos do tipo numérico tem uma indexação muito mais rápida que tipos nativos como date ou timestamp). Eu procuro sempre adotar somente os tipos mais primitivos possíveis na persistência, o que acaba ficando restrito a strings, números e booleano, e colocar no espaço das regras de domínio a forma como eles podem ser criados, alterados, etc.
Mas como eu disse, não há um certo ou um errado, são apenas formas diferentes de abordar o problema!
Obrigado pela sua contribuição à discussão!!