For most use cases millis() should be plenty accurate. Definitely not minutes or hours off.
I originally planed on having an external timer for my setup but then realized it wasn't worth it for me. The data received by the gateway is timestamped and that is good enough for me for now.
Possibly in the future, was thinking of every night say midnight, having the motes check in for the current time from the gateway and adjust for any possible offset. That would allow for the motes to accurately timestamp and save the data in the case there are dropped packets. I digress from your question.
Basically, unless needed for a very specific reason, adding a timer adds more complexity, power requirements, size and another point of failure. Is it worth it for you?