Olá Felipe, tudo bem? Você chegar ao mesmo resultado pode ser apenas uma coincidência, porém a função dois dois é um pouco diferente, note que o ORDER BY é apenas para ordenar a consulta, já o HAVING faz um filtro nesse agrupamento que é feito pelo GROUP BY, então talvez nesse cenário, por alguma coincidência, ou pelo que está sendo analisado você tenha o mesmo resultado, mas em um outro cenário provavelmente o comportamento será diferente. Então o que eu sugiro é que use cada um de acordo com a funcão, se você deseja filtrar o agrupamento e trazer como resultado apenas os clientes com  "mais 2000 compras em 2016" então o mais coerente é usar o HAVING, agora se você precisa apenas ordenar e ter uma lista de todos os clientes com suas respectivas quantidades de compras em 2016 você pode utilizar o ORDER BY.
Espero ter esclarecido sua dúvida!