May want to check out stenciling the texture.
https://docs.blender.org/manual/en/dev/sculpt_paint/brush/texture.html
But “best workflow” imo depends on the use case and limitations. If for art piece and you have no texture size limitation, then the above is good. Also UDIMs are coming or already here, not sure.
For things like a bridge, I’m guessing stonework. That has a very structural look and leaves you no flexibility on procedural randomizing. But you can add detail textures (image or generated) where structure is unimportant and can be at least orientation blended to avoid texture repeats. A completely different UV approach would be required if you planned to use procedural bricks for texture and randomization work. Which part of this splitscreen of a carpet texture looks CG repeat, left or right?
In that one I’m rotating texture as well as mirroring, 4 different outputs of the same texture.
(Wth happened to my resolution? Sometimes linux is weird)…
But if for a game asset where you have limited texture size you might consider sharing texture space/overlaps using symmetry tricks to increase the texel density, and of course delete never seen geometry. But that may require support for additional UV channels as you couldn’t bake lighting this way.