Instead of pulling from a dedicated registry (which you can think of as an HCL package repository), you install the Pulumi providers as a regular package for your programming language. Pulumi's TypeScript packages are released through npm, Python packages are on PyPI etc.
There are different kinds of equivalents to TF modules, which also depends a bit on the paradigms the programming language supports. For example, you can create resources in functions, which is a relatively light weight way of abstracting away small sets of resources that you need to create frequently. You can also create
component resources, which (like TF modules) have inputs, outputs, and their own lifecycle management.