Dedicated interfaces seems to be a good way to expose the optional features in a domain-specific type hierarchy. However, they impede the use of decorator and composite patterns, which is also common in this kind of hierarchy.
Especially, probably no one wants to implement a decorator/composite for each possible combination of these interfaces, so more often than not they implements all optional interfaces and use type checking to selectively forward the calls, which defeats the purpose of having separated interfaces.
An alternative, which the Java Collection framework uses, is to include all operations in the base type and just fill them with dummy implementations. Default methods in Java 8 further facilitates this usage.
In a way, this feels like the nullable columns debate in the database world. Is there any strong argument against the more practical latter approach?