Again, abstract classes are about more than object construction. A concrete class with a protected constructor is not an abstract class - or put another way, it's still a concrete class, as mentioned already. Use them for versionable components that also provide member-implementable types (this is what makes them versionable). See the thread on abstract class vs interface for more insights from Niners (and MSDN).
C