I think the practice here is Open/Close principle which says "software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification" (cf. wikipedia). So yes it is good to allow safe extension via interfaces.
But we should keep in mind that we want to keep a clear/simple exposure of the architecture of the components (ie. the interfaces). Interfaces lead the developer on how he should override services. IMO exposing to much is not always good. It would allow unnecessary overrides that might denote a bad practice. That is the Close part of the principle.