A project I work on uses both RTC and NTP running on battery and using deep sleep and RTC seems to be the better option for battery saving and reliability.
I’m using RTC with i2c protocol and a clear advantage is that you’ll get the time you need, tens of ms as compared to using NTP that requires at least 1 or 2 seconds depending on the library being used. Also, issues like connection problems or such seem impossible when using the RTC Module. While wifi/internet/ntp connection fails at times, the RTC module has never once failed during my tests. Conveniently, you even can program the RTC module offline and mount in the circuit after that as it includes a back-up battery, which claims a guarantee duration of a couple of years. I use the date and time coming from the RTC module, which I calibrate using the NTP protocol only once a week.
However, many IoT cloud platforms only accept data that use the timestamp of the receiving stream rather than the one provided by the device.