Do you mean they’re precompiled every time or just the first time activation or test? Are you using a workspace to merge the subprojects’ manifests into the parent project’s?
Then I’m more confident that something has gone wrong. It’s not unusual to precompile a first time, which could be running a test after updating dependencies or source, but a manifest and the cached package images should have prevented further recompilation, including a mere activate. Caching does have a limit (default to 10 unique instances per package), but I have no way of knowing if you’re hitting that somewhere. The workspace actually reduces that risk within a main project by resolving 10+ subprojects together with it; activate would only change the using/import-able names while referencing the same manifest of exact versions. When you recompile, is there a consistent set of recompiled packages and versions?