Cara, pesquisei um monte aqui, e não achei uma fonte 100% pra copiar e colar a resposta diretamente. Pelo que entendi das buscas é que por exemplo, se você possui uma alocação NÃO aleatória de endereços, então você conhece as posições de memória a serem executadas, e portanto, você pode atacar um sistema colocando naquela posição de memória conhecida um código malicioso. Quando você tem a alocação aleatória, não há como prever onde o sistema buscará instruções, e portanto, você REDUZ (não evita completamente, precisa de outras técnicas juntas para evitar) a chance de haver uma execução arbitrária de código, pois quem está realizando o ataque não conhece a posição de onde será executada a próxima instrução.