Diferença entre Count() e Length em C#
Resumidamente, length é tratado como uma propriedade e o Count() como uma função.
Aprofundamento:
Quando escolhemos uma propriedade geralmente queremos fazer algo que apenas pega um valor com complexidade constante, ou seja, leva sempre o mesmo tempo para obter sem importar o tamanho da coleção de dados a analisar.
Isto é possível porque de alguma forma essa informação já existe e não precisa fazer nenhuma operação para obter. O array guarda a quantidade de elementos da coleção então fica fácil. Em outras coleções esse número seria mantido atualizado em cada operação que mude o tamanho da coleção. No array nem precisa porque o tamanho é fixo depois de criado.
Outras coleções de dados podem não suportar a obtenção deste número em tempo constante. Para tal, utiliza-se uma função potencial para ter uma complexidade logarítmica, linear (a mais comum) ou quadrática, por exemplo.
Claro que se for possível fazer em tempo constante será feito. Mas para isto a função precisa ser nativa do tipo, ela precisa conhecer o detalhe de implementação do tipo. O Enumerable.Count() não pode saber desse detalhe, então ele sempre fará uma contagem em tempo linear, já que serve para qualquer tipo enumerável, até aquele que não tem um tamanho definido e só pode ser contado.