На самом деле плохой практикой (и то в ряде случаев это утверждение спорно) является перекрытие существующих свойств bootstrap заданных в указанных классах (просто потому что это меняет нативное поведение и делает его неожиданным). Блоку с уже присвоенными классами bootstrap можно назначать свои классы в случаях когда данные классы расширяют (а не перекрывают (опять же не всегда это правило)) набор свойств заданных элементу.
В общем, плохо/хорошо это весьма размытые понятия и применять категорично какое-либо утверждение - это ошибка, бывают различные ситуации и нужно поступать сообразно им. Единой практики в верстке нет, существует множество подходов.