Acho que há alguma confusão na maneira como você tenta usar o cabeçalho X-Forwarded-For.
Primeiro, o fato de o nginx ver um endereço IP significa que o haproxy o adiciona corretamente. O cabeçalho contém apenas o endereço de origem do qual o haproxy recebeu a conexão, portanto, é normal que você não veja o endereço IP do haproxy nos registros nginx.
Em segundo lugar, também é esperado que você não observe x-forwarded-in em solicitações recebidas, porque apenas alguns proxies de saída adicionam o cabeçalho, mas em geral é recomendado não fazê-lo ao acessar a Internet. Se alguns usuários enviarem uma solicitação com esse cabeçalho, você verá isso na captura do haproxy e o nginx registrará esse valor e o IP do cliente adicionado por haproxy.
O que eu não entendo é o seu ponto # 3, porque você parece assumir que o cabeçalho está necessariamente presente nas solicitações recebidas, o que obviamente não é o caso, a julgar pelas capturas do haproxy e pelos logs do nginx. Acabei de lhe enviar um pedido agora com
"X-Forwarded-For: Oi, Jesse, este é o Willy" que você deve ver nos logs haproxy e nginx se puder ajudar a solucionar problemas.
O que é possível é que antes você estava acostumado a ver vários endereços porque um dos seus principais visitantes estava usando um proxy de saída que adicionou o cabeçalho XFF, ou porque você tinha outro proxy reverso na frente do haproxy (por exemplo: apache, stunnel, ...).
BTW, você deve substituir "option httpclose" por "option http-server-close", ele ativará o keep-alive com os clientes e reduzirá o tempo de carregamento da página para aqueles que experimentarem alta latência.