O "mais especial" pode ser definido por diferentes critérios (ex.: quem gastou mais, quem fez mais compras, etc.).

Praticar a flexibilidade do Stream API: O código mostrado no livro foca em calcular o total gasto por cliente (Map), assumindo que o "mais especial" é quem contribuiu mais financeiramente (maior valor acumulado).

Agrupa os pagamentos por cliente (groupingBy).
Soma os valores de todos os pagamentos de cada cliente (reducing).

Map totalValuePerCustomer = payments.stream()
    .collect(Collectors.groupingBy(
        Payment::getCustomer,
        Collectors.reducing(BigDecimal.ZERO, paymentToTotal, BigDecimal::add)
    ));

Ao ordenar o resultado:

totalValuePerCustomer.entrySet().stream()
    .sorted(Comparator.comparing(Map.Entry::getValue))
    .forEach(System.out::println);

O "cliente mais especial" seria o último da lista (maior valor), no caso do livro:
Adriano Almeida=450

Outros Critérios Possíveis
Se "mais especial" tivesse outro significado, o código mudaria. Por exemplo:

Cliente com mais compras:

Map countPurchases = payments.stream()
    .collect(Collectors.groupingBy(
        Payment::getCustomer,
        Collectors.counting()
    ));

Cliente com o produto mais caro:

Map> mostExpensiveProduct = payments.stream()
    .collect(Collectors.groupingBy(
        Payment::getCustomer,
        Collectors.flatMapping(
            p -> p.getProducts().stream(),
            Collectors.maxBy(Comparator.comparing(Product::getPrice))
        )
    ));

Por Que o Livro Escolheu Esse Exemplo?
Didático: Mostra como combinar groupingBy com reducing para resolver problemas complexos.

Desafio: A versão inicial do código é intencionalmente densa para depois refatorar (com paymentToTotal ou getTotalAmount).

Preparação: Ensina a pensar em operações aninhadas (redução dentro de redução), úteis para processamento de dados.

Ver:
SpecialCustomerExample.java