Compared to TCR, TCE needs to do more events such as keyboard/mouse.
Customizing TCE is more work than TCR. TCR only requires you to override 1 method — getXXXComponent(). TCE needs a 2nd — getCellEditorValue(), which is invoked during the event handler stopCellEditing(). This getCellEditorValue() returns the value from the cell editor object, to be injected into setValueAt().
A customized TCR/TCE can both target a data type (like Boolean) or a particular TableColumn, which is most practical in trading.