I inherited some legacy code at work and it is using a rather unusual design pattern. The only reference I could find on the forums to a similar patter
The benefit is that you return some concrete implementation but hide it via common interface or base class. Thus client isn't bothered by implementation details, but works with a most basic class.