Olá.
Region é um recurso da maioria das linguagens modernas de programação que permite ao programador agrupar trechos do código-fonte utilizando um nome ou frase (embora aqui eu esteja citando o C# mais claramente). Não tem efeito nenhum efeito sobre compilação ou sobre a lógica/performance do código-fonte em si, mas sim, permite melhorar sua legilibidade.
Ora, é muito bom quando você acessa um código-fonte e a leitura do mesmo está dividida em blocos. Facilita muito a leitura.
Por outro lado, algumas vezes o programador perde a noção da quantidade de regions a utilizar no código e acaba super-utilizando este recurso. O resultado final é um código-fonte com leitura muito quebrada e, por causa disso, difícil de ler. A cada X linhas o pensamento é interrompido por um Region que necessita ser expandido para que a leitura continue.
No exemplo abaixo, criei uma classe para demonstrar como o abuso na utilização de Region dificulta a leitura do código-fonte. Chega a ser engraçado, você abre o código-fonte e encontra algo inocente como exibido na imagem abaixo:
E então você começa a expandir region após region até exibir todo o código-fonte e no final se depara com um código-fonte como definido nessa imagem. A proporção de regions utilizadas supera em muito a complexidade do código-fonte: a classe contém um construtor padrão, uma propriedade, um método privado e outro público, porém, há não menos que 20 regions definidas. Exagero é pouco, certo?
Novamente, o uso das regions é bem-vindo desde que sua utilização sirva para melhorar a leitura do código-fonte. Agrupar trechos comuns do código, utilizando poucas mas bem posicionadas regions torna a leitura "agradável". Dividir excessivamente o código-fonte utilizando muitas regions quebra a sequência/fluência de leitura. Evite.
Eduardo.