As you said, when you
use Application Library Caching, the cached assemblies are removed from the .xap file and placed in a separate .zip file (as the link provided before explains). As the
XapModuleTypeLoader only gets the assemblies present in the .xap files (check the GetParts method), only the assemblies you place in them will be loaded.
Creating a type loader that checks whether the external parts have already been downloaded and download them if they haven’t would be a good approach (and also a useful contribution to the community).
One of the other things you could use to reduce the size of .xap files is explained in
Remember that Prism 2.0 was created targeting Silverlight 2.0, and then refreshed for 3.0 due to very few high priority bugs. The feature you are talking about is newer than 2.0, so make sure to create an item
in the Issue Tracker, so other people can vote for it. The team will take these suggestions into account for the future versions of Prism.
Please let me know if this helps.