Como ha dicho @eviltrout, ahora estamos utilizando migraciones y tablas dedicadas en varios complementos con gran éxito. La capacidad de aplicar restricciones de base de datos ha ayudado a mejorar el rendimiento (búsquedas en cualquier columna) y la integridad de los datos (mediante índices únicos). Estos dos aspectos han demostrado ser especialmente importantes a la escala de algunos de nuestros clientes alojados; algo que realmente no consideré antes de unirme al equipo.
El primer complemento sustancial en el que trabajé fue chat-integration, e implementé un “activerecord falso” muy complicado, que se apoya en el almacén de complementos. En retrospectiva, las tablas dedicadas habrían sido una opción mucho mejor, y podría considerar migrar el complemento a ese enfoque en el futuro.
Estoy de acuerdo cuando se trata de modificar tablas principales. Agregar o modificar columnas en tablas existentes podría tener consecuencias no deseadas más adelante y permanecerá incluso si el complemento se desinstala. Desaconsejo encarecidamente hacer esto.
Las tablas dedicadas, por otro lado, son de riesgo relativamente bajo. Si el complemento se desinstala, simplemente permanecerán sin efectos secundarios negativos (siempre que no introduzcas restricciones de clave foránea). Dejar datos almacenados no es “peor” que usar el almacén de complementos.
En cuanto a la limpieza, podríamos considerar proporcionar tareas rake que “reviertan” las migraciones de complementos para limpiar. Pero, para ser honesto, no creo que esto se use mucho. Mi suposición es que la gente rara vez desinstala complementos y, cuando lo hacen, prefieren mantener los datos por si acaso quieren volver a instalarlos.