Я не вижу ничего плохого в том, чтобы задавать ширину/высоту блоку
И я о том же. Но главное, четко определить, что ширина/высота это внешка либо внутрянка. И во всем проекте использовать только один подход.
Я вот, например, спокойно могу задать блоку "width: 100%". Хотя это, на первый взгляд, делает блок сильно зависимым от контекста, но, с другой стороны, он позволяет контексту более гибко его ограничить и расположить, а порой это очень важно.
Отсюда и вытекает идея адаптивности отдельных компонентов. Грубо говоря, мы, задавая "width: 100%", не знаем, сколько реального места займет блок. Но при этом мы имеем возможность настроить его так, чтобы он при любом значении "100%" (кроме абсурдно малых) выглядел нормально.
Порой, это полезно и блокам с фиксированными размерами. Я во всех проектах использую вот такое извращение: "body * {max-width: 100%}". Т.е. даже если блок имеет фиксированную ширину, но его вдруг "сжимает" контейнер, у нас все равно остается возможность адаптировать его под этот (и любой другой) контейнер.