Один большой бандл для всего или много маленьких модулей лучше грузить на сайт?
Я на эту тему делал доклад: https://www.youtube.com/watch?v=rQDd5kCwDj8
Там есть и личный опыт и ссылки на исследования.
Правда, с 2016-го что-то могло поменяться, но я, честно говоря, сомневаюсь.

Если резюмировать ответ на вопрос: лучше всего собирать две версии - для HTTP/1 и для HTTP/2 и отдавать клиенту то, во что он умеет.
И все же, что же лучше?
1. Собирать весь фронт в 2 файла: style.css и script.js, и грузить из на всех страницах.
2. Разделить все на кучу мелких компонентов, и грузить только то, что есть на странице.Не хватает ещё одного пункта:
3. Грузить то, что требуется в данный момент.

Начинаем с того, что уже упомянул Алексей Уколов: Если резюмировать ответ на вопрос: лучше всего собирать две версии - для HTTP/1 и для HTTP/2 и отдавать клиенту то, во что он умеет.
И затем, пункт 3.
Я создал includeHTML, который может сразу загрузить всё параллельно (скрипты, ноды, стили) или же "подтянуть" нужные ресурсы в нужное время по любым событиям. Это удобно, когда нужно экономить ресурсы клиентского устройства и полосу пропускания: мобильные устройства.
Поскольку синхронность/асинхронность полностью регулируется, приоритетами при запросах ресурсов мы можем сами управлять на уровне искусственного стека/очереди с помощью JS-кода.