I think the most memory-efficient way to do this is going to be calling one workspace from another, e.g. by using a WorkspaceRunner transformer in a controller workspace which calls the clipper workspace repeatedly with different parameters.
The clipper workspace will likely need to implement dynamic schema unless all the shapefiles share identical schemas.
Other methods, such as a fan-out may take less time but consume more memory, because you are reading and writing multiple files in the same session.
Additionally there is a time cost to starting up another FME instance each time you call the WorkspaceRunner, although in my experience this is very short as long as you are not doing something that requires checking out an ArcGIS license.
The only way to know for sure is to try it yourself and compare.