Причинах чего именно? Вот нам надо обеспечить целостность данных. Как это делается в реляционных БД? Разными уровнями изоляции транзакций, которые защищают от разных ошибок. Как то же самое сделать в NoSQL? Только силами тех людей, которые пишут бизнес-логику, потому что других в типичной команде просто нет.
Вот, хороший пример, спасибо. Проверка foreign key при вставке. Силами бизнес-логики, иначе негде.
Мне кажется, что для команды лучше, когда в ней все пишут бизнес-логику, чем когда есть отдельные люди, которые занимаются написанием и поддержкой специфичного для хранилища кода. Потому что во-первых такие люди могут быть либо бутылочным горлышком, либо простаивать, а во-вторых на взаимодействие между инженерами тратится время. Как в анекдоте: что один программист сделает за один день - два программиста сделают за два дня.