Another use-case for macros: implementing (de)serialization of data classes into things like Android’s Parcel. Delegates aren’t powerful enough to do this concisely.
From what I’ve seen, the standard approach is to either do it by hand, or use an IDE code generator plugin. The latter is terrible compared to a compile-time code generator, because it adds noise to the code that I rarely want to see, and I must remember to regenerate whenever the hand-written code changes. And what happens when the generator is improved? I have to go and find all the places I used the code generator and run it again.