Standard method of getting what you want is to store a morph target before each stroke, then after your next stroke, morph back the details that overlapped by using the morph brush.
It’s a cornerstone technique for this type of thing.
But if you’re having problems or can’t resolve the problem using that method, you can try a few different approaches.
First approach is via tiling your alpha. You can do this in 3.5 via the Brush Palette under Alpha and Texture. The feature is called AlphaTile and you can control the amount of times the alpha tiles via the slider. This is a very fast way to take one alpha, in your case a shingle alhpa, and have zbrush tile it automatically, then use the drag rect stroke and the layer brush or elastic brush on a low zadd setting to bring out all the shingles at once.
Second approach is via the new Tilt Brush features, and…the ScalesFish, ScalesLizard brushes. Just replace the alpha with a roof shingle alpha, then adjust the Tilt settings in the brush palette to get a nice set of shingles when you drag down on the roof. Should be almost an automatic process. Also the new Planks brush with a couple tweaks and nice shingle alpha would do the the trick.
There’s actually so many ways to do something like the roof that I couldn’t type them all. But for your question about fixing that overlap, quick and dirty way is to use morph target, morph brush combo.