Multiple trees is more efficient because you can merge changes from one stage to another on a per-module basis, rather then merging entire branches with all configuration, manifests, modules and so forth. Additionally, using multiple trees allows you to upstream modules integrated into your own set of modules.
Using one SCM tree for each module allows you to set access control accordingly, and stage changes per module instead of globally.