Ahora si esta resuelto el problema del cierre. El problema era en 'TMaestro.FormCloseQuery' que se ponia el 'Controller := nil' y bajaba el conteo de referencias de Controller. Cuando llega a cero el objeto ya deja de estar disponible. Con los 'TAbm' no habia drama porque aparte de la referencia 'Controller' tenia tambien el 'ABMController' y cuando haciamos 'Controller := nil' el conteo bajaba a 1 y no a cero, por lo tanto el objeto todavia no se liberaba la instancia. Pero para el 'TProcesoPago' que solo tenia 'Controller' (o sea una sola referencia al Controller), cuando haciamos 'Controller := nil' ya bajaba a cero el conteo y cuando queriamos usar '(FController.GetModel.MasterDataModule as ISubject).Detach(Sender as IObserver)' ya nos daba error porque la instancia 'Controller' ya estaba liberada. La solucion fue tan simple como borrar la linea 'Controller := nil' en 'TMaestro.FormCloseQuery'.