Я не думаю, что он имел в виду «плохой дизайн» так много, как «плохая практика». Вообще говоря, веб-приложение должно быть как можно без состояний, насколько это возможно. Даже если, например, вам может потребоваться информация о пользователе, чтобы авторизовать просмотр страницы, эта информация может быть сохранена на клиентском компьютере в форме файла cookie, и сервер просто проверяет информацию о пользователе каждый раз.
Это было бы идеально, но вы не всегда можете рассчитывать на то, что клиент сможет сохранить куки. Кроме того, это включает проверку пользователя в режиме без сохранения состояния, что потенциально включает запрос информации из базы данных для простого запроса страницы. Часто бывает проще сохранить такую информацию в сеансе.
Однако, как только вы перешли Рубикон, у многих программистов возникает соблазн сохранить не только информацию об аутентификации в сеансе, но и многое другое. Это анти-паттерн, который делает вашу веб-программу сильно зависимой от состояния, чего именно и следовало избежать в первую очередь.
Некоторые программисты будут использовать такие технологии, как Spring (если вы используете Java), чтобы распутать то, что иначе было бы беспорядком зависимостей, но я бы сказал, что это только облегчает создание зависимостей, а не устраняет их. Такие технологии должны помочь вашему развитию, а не сделать ваш шаблон менее проблематичным.
Поэтому хорошее практическое правило заключается в том, что если вы можете написать это без сохранения состояния, то, вероятно, лучше сделать это, иначе вы рискуете попасть в эту ловушку. Очевидно, что вы столкнетесь с ситуациями, в которых это требуется, но, вообще говоря, вам следует сохранять только ту информацию, которую иначе было бы трудно восстановить.