Procedural leakage shader from roof and others stuff
I think that I have methods for both simple and complex shapes.  To set up our scene I have this model that I've assigned this PBR texture.

For now we want to treat this as a simple shape and generate a leakage map on the top edges.
To do this we need to be looking at Generated Coordinates separated into only the Z axis.

Now, separately, we can generate some noise and scale it on the X and Y axes with a Mapping node and we get the beginnings of some sort of overall leakage map.

If we mix this noise into our coordinate space and look at the Z coordinate now, we have generated a leakage gradient.

Now we can use a Math node set to Subtract to control where this gradient terminates.

Once you have it placed, I would use a Multiply operation (also clamped) to bring the values up.

Now we can go back to our original PBR setup.  What I did to apply this is simply drop a Hue/Saturation node on the base color and use this black and white map as the factor input.

You have all of these sliders to adjust the effect.

And if you need more variation, feel free to mix in as many layers of noise as you want.  You'll be constantly adjusting your termination zone, though.

So this should work for pretty much any simple shape, but you'll notice there's a lot missing from this.  For more complex shapes you could always generate several masks and add them together, but if we want it to automatically account somewhat for corners and especially windows we need to look to the Bevel node.
If we set our bevel radius pretty high and separate out the blue channel, we basically catch every top face and a bunch of the connecting faces.

We can use similar methods to mix this into our noise layers and come up with something like this.

Which I think works pretty well.  I'm not exactly 100% happy here, but considering you can just mask out anything you don't want and can mix and match methods I think I'm satisfied to finally leave the answer here.