Vou tentar explicar sim, Edson! Mas me diz, de onde você pegou esse código? Porque, para falar a verdade, ele está bastante confuso e não muito pythônico hehe. O código também tem o problema que, caso haja um empate, ele não vai retornar a primeira substring do empate.
De qualquer jeito, acho que aqui cabe explicar só a função reduce(). Antes, queria avisar que em breve vai sair um post bem legal no blog da Caelum sobre programação funcional em Python, que vai incluir uma explicação dessa função e, ainda, o porquê de seu uso não ser recomendado!
Basicamente, a função reduce() vai reduzir uma lista de valores a um só. Nesse caso, cada valor é um caractere da string original. O que está sendo feito, então, é que, em primeiro lugar, a função achar_maior_sequencia() está sendo rodada com os parâmetros 'a' e 'z'. Em seguida, é rodada de novo com o resultado dessa primeira execução e 'c' como parâmetros, e assim por diante até que só se tenha um resultado final. Repare que isso fica muito confuso, e esse é o principal motivo que essa função é evitada (e inclusive fortemente criticada pelo próprio criador do Python). Pra ficar mais claro, olha esse código de exemplo:
def soma_numeros(a, b)
return a + b
numeros = [1, 2, 3, 4]
reduce(soma_numeros, numeros)
E olha só como o reduce() vai funcionar:
