No, se devono fare le stesse identiche cose, allora tutto (campi, initialize(), ecc...) va messo nella superclasse (ControllerAuthorEditor).
La sottoclasse come ti ho mostrato io es. ControllerAuthor serve principalmente per specializzare la costruzione del TypeToken, perché è una cosa che NON puoi fare in una classe "generica" come la ControllerAuthorEditor<T> (dove tutto sarebbe <T> / List<T> ).
Poi se tu avessi altro da "specializzare" ... beh, ben venga, lo puoi fare in una delle sottoclassi specifiche.