Antes de a Microsoft adotar, estender e alterar o LDAP, a maioria das implementações tinha objetos para representar a raiz da árvore. Ou seja, você tem que começar de algum lugar.
Por razões em que não sou totalmente claro, no Active Directory, cada domínio na árvore / floresta está enraizado com um nome que dc = domain, dc = com que não é realmente dois objetos separados, é uma raiz virtual do diretório espaço de nome.
Eu acho que parte disso vem do fato de que, independentemente do que é dito sobre o Active Directory, ainda é uma série de domínios vinculados, e cada domínio precisa ser tratado como uma entidade autônoma.
Agora, existem relações de confiança transitivas automáticas em uma árvore do AD, o que faz com que seja menos importante para os usuários finais, mas mesmo que o espaço para nome pareça meio contíguo, na verdade não é.
Isso se torna mais evidente com algumas das regras de nomenclatura no AD. Por exemplo, sAMAccountName deve ser exclusivo em um domínio, independentemente de estar ou não no mesmo contêiner. Ou seja, o nome distinto completo deve ser exclusivo (você não pode ter dois usuários de John Smith no mesmo contêiner), mas o nome abreviado usado para muitas coisas internamente (sAMAccountName) precisa ser exclusivo em todo o domínio.
Outros serviços de diretório têm requisitos semelhantes, como uniqueID realmente deve ser exclusivo em todo o diretório, mas isso ocorre porque os aplicativos costumam fazer essa suposição, pois os gravadores de aplicativos têm preguiça de lidar com o problema complexo (não culpo é um problema difícil) de como lidar com dois usuários com nomes abreviados de jsmith tentando usar um serviço, mas existentes em dois contêineres diferentes. (Ou seja, cn = jsmith, ou = Londres, dc = acme, dc = com e cn = jsmith, ou = Texas, dc = acme, dc = com).
Como seu aplicativo usando este diretório decide qual usuário usar? A resposta usual é deixar o usuário decidir. Mas isso significa capturar esse caso, apresentar uma interface do usuário para o usuário escolher e outros enfeites.
A maioria dos criadores de aplicativos ignora essa possibilidade e usa apenas uniqueID ou sAMAccountName, porque é único (mais ou menos) e mais fácil de fazer.
A diferença entre uniqueID e sAMAccountName seria que uniqueID deve ser exclusivo em todo o espaço de nome do diretório. Considerando que sAMAccountName é garantido apenas como exclusivo no domínio. Se a árvore do AD tiver vários domínios, não haverá garantia de exclusividade entre os domínios.