Причин, как мне видится, несколько:
1. "Глазу приятнее" - на самом деле это не такая глупая причина, и имеет достаточно глубокие последствия, особенно в наше время. Вся индустрия дизайна и достаточно большАя часть маркетинга товаров построена на том, что конечному потребителю должен быть "приятен" вид продукта, в том числе и его визуальное восприятие. Благодаря этому приобретут больше товара, и производитель выиграет. И различная цветовая гамма (ну и размеры) qr-кода играет на то, чтобы qr-код наиболее логично и красиво вписывался в дизайн и цветовое оформление конечного продукта
2. В повседневности используются qr-коды различных размеров - от совсем крохотных (на пробках от шампанского или пузырьках лекарств) до просто гигантских (на стенах супермаркетов, автобусах, рекламных растяжках). И необходимо работать с qr-кодами без искажения изображения, чтобы не было проблем со считыванием
3. Внутренняя сущность. Библиотека qrcode базируется на работе с элементом canvas, который (мы это рассмотрим, я планирую сделать курсы графики для Node JS и JS) имеет множество параметров для изменения размера, работает с различными цветами изображения и фона, и разработчики библиотеки qrcode решили не блокировать эти свойства, а по максимуму использовать (для достижения целей, которые я описал в п 1 и п 2)
Возможны и иные потребности в параметрах qr кода, которые навскидку не видны