Não entendi o motivo de colocar o agregador MAX( ) e não colocar o campo QUANTIDADE simplesmente no GROUP BY (como coloquei no código abaixo), fiz desse jeito e me parece que o resultado foi igual.
/* COMPARAÇÃO QUANTIDADE DE VENDAS E LIMITE POR CLIENTE */
SELECT NF.CPF
, CLI.NOME
, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m') AS MES_ANO
, SUM(INF.QUANTIDADE) AS QUANTIDADE_MENSAL
, CLI.VOLUME_DE_COMPRA AS QUANTIDADE_LIMITE
FROM itens_notas_fiscais INF INNER JOIN notas_fiscais NF
ON INF.NUMERO = NF.NUMERO
INNER JOIN tabela_de_clientes CLI
ON NF.CPF = CLI.CPF
GROUP BY MES_ANO, CPF, NOME, QUANTIDADE_LIMITE;