Так всё ж просто — возвращая объект, вы даёте внешнему коду юзать этот объект. И если раньше этот внешний код зависел только от API вашего объекта, то теперь будет зависеть ещё и от тех объектов, которые вы вернули. Так вы теряете контроль над API и возможность его безболезненно менять.
Ну и chained-методы в динамических языках плохи тем, что один из элементов цепи может вернуть не объект, и тогда будет ошибка обращения к методу «не-объекта».
Есть случаи-исключения, когда не нарушить этот закон нельзя (фабрики), но в целом — это один из самых больно бьющих законов, если его нарушать.