One clear case where setters are typically needed is for Web Components.
CustomElement attributes are typically set declaratively via HTML and they always *appear* to be properties.
However, you will want to know whenever such a value changes, so you'll use a setter.