Puede haber razones reales para querer/necesitar una sola tabla de comentarios. Por ejemplo, simplificaría la visualización de todos los comentarios de un usuario determinado. Además, las búsquedas a través de todos los comentarios serían más simples (coloque un índice FTS en una tabla y listo).
Por otro lado, si no hay una razón de peso para mantener los comentarios en una sola tabla, existe una posible tercera (y bastante obvia) solución.
Cree una tabla de comentarios separada para cada elemento (publicación, evento, archivo, documento). Las relaciones RI serían muy sencillas de definir y describir en esa situación. Además, si escribe consultas ad-hoc con mucha frecuencia, podría simplificarlo. Por ejemplo
select * from documents d left join doc_comments c
on d.id = c.docid
where d.id=42;
Nada de esto puede ser pertinente o importante para su situación, pero podría valer la pena considerarlo.
Un pensamiento aleatorio adicional:ambas soluciones en el OP tienen la "sensación" de que están definiendo una relación de muchos a muchos (por ejemplo, un comentario puede pertenecer a varios elementos). Suponiendo que esa no sea la situación deseada, se puede prevenir con el índice único adecuado,... pero aún así... tiene esa apariencia inicial, que parece que podría dar lugar a una posible confusión.