That's really not true. The Y combinator is not generally useful for instance, because every modern language supports recursion.
> Currying is indispensable in some composability workflows.
It's not.
> Then you give each subcomponent a curried setter with the prop locked in.
That's partial application, not currying.
There are convenience use cases for libraries providing curried versions of some functions e.g. you might want to provide both `setModelProp(prop, val)` and `setModelProp(prop)(val)`. But that's because you expect significant use cases fo partially applied versions of the utility functions. Currying is not necessary for this, it just makes things more convenient for users.