My personal preference would be to create a file named after the module in the parent directory, i.e. puppet/pops/binder/hiera.rb which would declare the Hiera2 module and all module specific require statements (using require_relative perhaps?). The puppet/pops.rb would then just require that file and hence not need to change every time a class is added, updated, or deleted in the Hiera2 module. This file would become the natural place for the module documentation.

In all other files, the module declaration just serves the same purpose as a Java package declaration. It defines the namespace so that module scoped constants can be referenced without the need to use fully qualified names.