Почему они это делают? Или очередной риторической вопрос.
Интересная особенность современного поколения разработчиков - они очень любят эксклюзивные блокировки.
1) select ... for update - "самый распространенный вариант"
2) pg_advisory_lock - "у нас фреймворк такой"
В результате - стандартная ситуация, которой лет 30, если не больше - "на тесте все работает, а в продуктивном контуре, при реальных пользователях нет".
Я в СУБД с 97-го года , пока не могу представить сценарий при котором , в современных СУБД нужна эксклюзивная блокировка строк и таблиц, особенно в высоконагруженной OLTP.
Наверное мои знания и представления о современной разработке для СУБД несколько устарели.