something not clear here : the ConfigProviderInterface is optional..; than means we can either do 
class Module
{
    public function getconfig()
}

or 
class Module implements ConfigProviderInterface
{
    public function getConfig()
}

but what is confusing is, - maybe - that both writings are ok...
i'd think that if something is optional, it means you can still use your Module class but if you need to access some extra methods (such as getConfig()), you'd have to implements the ConfigProviderInterface.

But in ZF2, actually, you can access getConfig while implementing or not the interface...
(same remarks for the serviceManager interface later)