Module classes and ConfigProvider classes serve two different purposes.
Basically:
Module classes provides support to Laminas MVC applications.
ConfigProviders provide support to Mezzio applications.
In mezzio the ConfigProvider is added to the array to seed ConfigAggregator.
In MVC the module manager calls the Module.php files iirc based on the /config/autoload/modules.config.php or application.config.php at the application config level. Basically providing the list of modules that expose Module.php files to be called.
In components that support both the most common approach is to create an instance of ConfigProvider and return the providers method call as the MVC supported keys value through the getConfig method of the Module class.
Not sure if you have read this but it covers all things config.
There is important information in this one as well.