I’d imagine Smart Lighting might use the events sent out by the Weather Station app (events at Sunrise and Sunset, and events with the next day’s times after Sunset), but if not it uses the function calls in the legacy library/API. Or both.
No, it uses the legacy library/API too, though only updates the times every few hours. Pistons do their own scheduling, so how accurate they are depends on when they last ran. At certain times of year some ‘sunrise’ pistons may be fired twice because they fire at the previous day’s sunrise time and then immediately reschedule for the current day. You’ll often see pistons written to fire during the night before it can possibly be sunrise but when the new times should be available, just to reschedule and avoid this. The same can happen with ‘sunset’ pistons too - it depends on what other times of day they run.
I mention all that just to illustrate this isn’t as trivial as it might seem.
The description I’ve seen is that Automations only used to reschedule Sunrise and Sunset timers when they’d drifted from the actual times by a certain amount. Indeed I seem to remember seeing that behaviour. I am sure they have reasons for this. I can’t think in terms of tens of thousands of users to appreciate them. Anyway this rescheduling hasn’t been happening.
My sunrise/sunset stuff is all in Smart Lighting and I’ve only really noticed reports of the problem with Automations in the last month or so. Naturally that makes me wonder if the switch to using the Rules API was a factor. I can imagine how it could be. Pure speculation though.