Depois de alguma pesquisa eu finalmente aprendi que o parâmetro da função é uma máscara de bits, e é preciso combinar vários valores para obter o resultado desejado. A combinação final não é excessivamente lógica, mas funciona conforme o esperado, lançando uma exceção em um erro de consulta enquanto ignora os avisos.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
produzirá o resultado desejado:
Erro fatal:Exceção não capturada 'mysqli_sql_exception' com a mensagem 'Você tem um erro na sua sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MySQL para a sintaxe correta para usar perto de 'foo' na linha 1'