A resposta curta é "para verificar propriedades adicionais do código existente". Resposta mais longa segue.
Não tenho certeza de que "implícito" vs "explícito" seja uma boa terminologia. Essa distinção às vezes é chamada de subtipo "estrutural" vs "nominal". Depois, há também uma segunda distinção nas possíveis interpretações de subtipagem estrutural (descritas em breve). Observe que todas as três interpretações de subtipagem são realmente ortogonais e, portanto, não faz sentido compará-las entre si, em vez de entender os usos de cada uma.
A principal distinção operacional na interpretação de uma relação de subtipagem estrutural A <: B é se ela é testemunhada por uma coerção real com o conteúdo computacional (tempo de execução / tempo de compilação) ou se pode ser testemunhada pela coerção de identidade. Se o primeiro, a importante propriedade teórica que deve ser mantida é a "coerência", ou seja, se existem várias maneiras de mostrar que A é um subtipo subestrutural de B, cada uma das coerções associadas deve ter o mesmo conteúdo computacional.
O link que você deu parece ter em mente a segunda interpretação do subtipo estrutural, onde A <: B pode ser testemunhado pela coerção da identidade. Isso às vezes é chamado de "interpretação de subconjunto" de subtipagem, assumindo a visão ingênua de que um tipo representa um conjunto de valores e, portanto, A <: B no caso de todo valor do tipo A também ser um valor do tipo B. às vezes chamado de "digitação de refinamento", e um bom artigo para ler sobre a motivação original são os tipos de refinamento para ML da Freeman & Pfenning . Para uma encarnação mais recente em F #, você pode ler Bengston et al, Tipos de refinamento para implementações seguras. A idéia básica é usar uma linguagem de programação existente que pode (ou não) já ter tipos, mas na qual os tipos não garantem muito (por exemplo, apenas segurança de memória) e considerar uma segunda camada de tipos, selecionando subconjuntos de programas com propriedades adicionais e mais precisas.
(Agora, eu argumentaria que a teoria matemática por trás dessa interpretação de subtipagem ainda não é tão bem entendida como deveria ser, e talvez seja porque seus usos não são tão amplamente apreciados quanto deveriam ser. Um problema é que o "conjunto dos valores ", a interpretação dos tipos é muito ingênua e, às vezes, é abandonada em vez de refinada. Para outro argumento de que essa interpretação de subtipo merece mais atenção matemática, leia a introdução aos subespaços de Paul Taylor em Abstract Stone Duality .)