Declarative code has low cyclomatic complexity per unit of business logic. It also tends to have low state management demands (which the functional devotees will tell you is the root of all evil).
You can use a DSL or other abstraction so that you can declare what will happen in what circumstances, in a way that’s succinct and easily comprehensible. And all the repeatable loops and conditionals that make the declared thing happen in the appropriate circumstances are under the hood and needn’t be concern or be loaded into mental context by the person designing or updating the requirements.
It’s not the right solution to every problem, but when you can apply it effectively it’s a huge win.
However, agents and most SWEs are trained on imperative (wrapped in procedural/functional/OOP paradigms), and most will default to imperative because it’s familiar.
As I get deeper in my career I find myself gravitating toward a style that’s declarative where possible, falling back on functional, and then only when necessary imperative/procedural/OOP. It’s nice that many modern languages allow you to mix and match features of all those paradigms.
TL;DR: Mental load is the bane of programmers everywhere, and declarative programming minimizes mental load.