A formatação de código do C# recebeu diversas influencias do Java (seu competidor direto quando foi criado, hoje não é mais) e também de outras linguagens mantidas pela Microsoft na época como VisualBasic.
Dificilmente alguém vai ter uma resposta precisa de pq as chaves na formatação padrão do Visual Studio começa na linha abaixo da primeira linha do bloco. Talvez isso facilite para a IDE onde começa e termina cada bloco, talvez fosse uma necessidade para o processo de compilação quando ela foi criada e se manteve assim. No fim, isso é apenas uma convenção, nada vai parar de funcionar por conta da formatação do código.
Quanto ao padrão de usar I para interfaces, eu já acho que isso é um padrão ruim. Quando a única coisa que diferencia o nome da classe da sua interface é a letra I, provavelmente você não precisa de uma interface.
Já vi códigos onde havia apenas uma classe para a interface, por exemplo:
interface IDbConnection
class DbConnection : IDbConnection
A intenção é boa, mas só adiciona complexidade pois se é 1 pra 1, não precisa de interface.
Agora se sua aplicação pode ter diferentes implementações, aí começa a fazer sentido:
interface DbConnection
class MySQLDbConnection : DbConnection
class SQLiteDbConnection : DbConnection
class OracleDbConnection : DbConnection
Nesse cenário, faz sentido ter uma interface pois a aplicação espera uma variação de implementações, e a própria nomenclatura das classes indica que não precisa do I na interface.
"Ah, mas vai que um dia eu precise de mais uma implementação de conexão...", quando esse dia chegar você cria a interface e as implementações, enquanto ele não chega, use apenas uma implementação e mantenha as coisas simples.
Mano, o padrão é usar I em todas as interfaces, não apenas em relação 1:1. Até porque a implementação diz respeito mais sobre o teu código do que sobre o padrão da linguagem.
Sempre que tu for implementar uma interface tu sabe já de antemão que é uma interface pelo prefixo I. Isso é particularmente importante quando o padrão extends/implements se aplicam da mesma forma através de um simples ":".
Sobre PascalCase, pensei que fosse uma nomenclatura antiga da Microsoft, por conta das pastas de arquivos do Windows, serem desse jeito. Isso influenciou até numa boa visibilidade, pois no lançamento do Java, por conta dos processos talvez MS gostaria de fazer diferente.
Sobre I na interface, achei uma ótima ideia por questões que voce sabe quando será uma Interface por causa da visibilidade, ao contrario do Java que voce precisa abrir a documentação do método/atributo e verificar se é uma interface, etc.