I usually, to fight with z-fighting, make very very small position or size differences, there is no other way to fight z-fighting, you can try to not bring two parts to each other (do not let them clip, turn on collisions) , change the sizes or positions just a bit by like 0.01-0.001 studs, or just union them (when you finish your building), but remember, sometimes unions have weird collisions, so I recommend if you are working with a lot of brick, first union those bricks, and then make a invisible collision brick (hit box, clip box).
Yes, its a lot of work but there here is no different way in building to avoid z-fighting.
If the concern is that this causes a lot of Parts in a game, in most situations, these Parts are instanced and have very little actual impact on performance, certainly less than most Unions.
Unions can help lower the amount of clutter a game has but I see your point. Roblox handles unions really poorly or really well depending on how you look at it.