Version control is a good reason to prefer an abstract class over an interface.
The .NET Framework has many abstract classes in places where an immutable interface would cause version issues should the public interface need to change.
For example, many classes outside the .NET Framework inherit interface and behaviour from the System.ComponentModel.PropertyDescriptor class. Should Microsoft decide the public interface of PropertyDescriptor must change, they can simply implement the changes and release a new version of the .NET Framework and the many hundreds of existing PropertyDescriptor implementations will be unaffected.
If an interface is chosen instead of an abstract class, the only safe ways of introducing a new public method would be to introduce a new interface, complicating the client code, or by applying extension methods. Extension methods on an interface will not have any private implementation to play with, so a base class is the only choice if your needs go further than creating Template Methods.
Using extension methods can cause problems, such as when an interface is extended to include methods of same signature of extension methods, the extension methods will never get called.
When it comes to design its probably best to avoid the use of Extension methods and create a derived class instead.