Mi recomendación general aquí es que, como autor de un plugin, siempre debes agregar índices en una migración para hacer cumplir correctamente la restricción. De hecho, la mayoría de los plugins que escribimos hoy en día evitan los campos personalizados a menos que sean absolutamente necesarios y prefieren usar tablas personalizadas, que son mucho más fáciles de entender.
En este caso específico, necesitas un índice de:
create unique index idxStartEvent on topic_custom_fields(topic_id) where name = 'start_event'
No estoy seguro de qué más necesitamos hacer en el núcleo aquí. Hemos considerado una revisión de los campos personalizados, pero estamos algo preocupados al respecto. Una cosa que estoy considerando es simplemente eliminar la compatibilidad con arrays de los campos personalizados, ya que han estado causando una enorme cantidad de problemas a lo largo de los años.