I just went through the steps you offered here and yes, Project Only -> Build … invokes UBT only once and only for the game modules. Build -> Build Solution (or F7 by the default binding) invokes UBT for each project in the solution with their individual “Build” command lines.
Thank you for clearing up this issue!