Interfaces do decouple contracts from implementation. The type design guidelines you cite don't mean that interfaces are poor for decoupling contracts from implementation - what it means is that interfaces have additional restrictions that abstract classes don't have, so if you have a choice, these guidelines are suggesting you lean toward defining abstract classes when you want to define a contract without implementation instead of automatically defining an interface.
When designing a contract for use within an application, this is probably fair advice. However, interfaces have a distinct advantage if the contract will be used outside of your application, such as out of process calls via COM or .NET remoting, or across different languages (outside of .NET). When you need absolute isolation and independence of implementation, interfaces are better than abstract classes. For convenience and long term flexibility within your application (and when the absolute isolation of interfaces are not required), the guidelines recommend you can use abstract classes instead of interfaces.
The wording of the guidelines is partly a reflection of the fact that people tend to overuse interfaces, which can lead to unnecessary clutter and redundant implementation code.