First, let me thank the Team for the great job they're doing with SilverStripe. It's one of the most beautiful pieces of code I've seen among content management systems so far.
I've been playing with it just for two days, so maybe I'm missing something, but I'm wondering why $addTitle and setAddTitile() are only in HasManyComplexTableField? As $addTitle is added to the Title() called from TableListField, why not move them both to this parent?
i think the naming Title() is a bit too ambiguous - strangely enough the $Title accessor is used in ComplexTableField.ss. we've already got a way to figure out the human-readable name of a class, by DataObject::$singular_name and DataObject::$plural_name. so we'd probably remove the $addTitle stuff altogether... see http://open.silverstripe.com/ticket/2312