Можно ли добиться этого результата с помощью http_build_query?
Нет. Внутренне http_build_query
добавляет =
разделитель ключ-значение независимо от значения параметра.
Вы можете увидеть исходный код здесь (PHP 7.3.3)
Означает, что вы либо должны принять cancel-renewal=
внешний вид параметра, либо можете изменить путь, чтобы получить что-то вроде /mypage/cancel-renewal?subscription-id=42
Третий вариант - написать собственную простую функцию для построения строки запроса.