The idea of customizing the projects with a list of relative subproject
directory file names solves those downsides, but comes with lack of
automation: you have to do it for every relevant project, and not forget to
update the settings as the project structure changes. Which might also be
a pain e.g. when switching branches, if your dir-locals.el is not
checked in.
Perhaps we'll ultimately end up with both ways to do this inside project.el,
but that feels redundant.
How 'bout something more "organic":
allow the user to interactively indicate "this is the root of the
current project" and save that info in some customization file?
IOW instead of having the users edit the customization info by hand,
allow them to edit it indirectly when they notice that Emacs doesn't
give the result they expected?