If the tiles were mesh instances, you could use the ‘per instance random’ node in the material to drive some random artifacts. As it’s all one mesh, you can just put a noise texture in the material and use that to distribute dirt over the roof.
Some good examples are in the materials in the starter content.