Werden Sie mit einem .Free wirklich nicht entfernt, oder wird das .Free evtl. gar nie aufgerufen, weil Du es in einem OnDestroy hast, das nie aufgerufen wird?
Bist Du mit dem Owner-Konzept vertraut? Mit welchem Owner erstellst Du die Komponenten, und warum verlässt Du Dich nicht darauf, daß der sich darum kümmert?
cbTables := TComboBox.Create(self);
.Free benutze ich im OnClose-Ereignis.