The issue is that the ModuleCatalog loads only entry points that are in assemblies used directly in the code. When using the pipeline API we instantiate objects that are defined in the Microsoft.ML assembly, so the assembly where the actual entry points are located does not get loaded.