Понял вопрос, а в чем проблема с if(){}else{} ?
Дело не конкретно даже в этих условиях, а в том, что очень часто разработчики внутри условий строку с запросом по кусочкам собирают. Звучит безобидно, пока таких условий не становится много. В итоге путаница со скобками, параметрами, а в некоторых случаях и запрос получается невалидным. Далее разработчик видя, что получается какаха, реализует шаблон проектирования "строитель" (если он знает шаблоны проектирования, конечно, и ему не плевать на качество кода).
Потом он думает "хм, а мне бы с объектами было удобней работать, чем с массивами" - и прикручивает туда самописный маппер результатов запроса на объекты. В итоге человек пилит свою ORM (простейшую, т.к. сделал квери-билдер + маппер), даже не зная об этом, и продолжает бить себя кулаком в грудь, крича, что он ненавидит ORM, и что они не нужны. Это я не прикалываюсь, если что. Реально неоднократно таких разработчиков встречал.