Midnight makes a lot of sense.
The birthday notification happens at around 6 a.m., and I can say with 100% certainty that if you make an attempt to reset a sim's age after the notification is made (either by way of Ambrosia, Life Fruit or the aging glitch), it will fail. One thing I have never tested is whether or not this reset will be successful just before this notification pops up. However, pregnancy is another way to delay an age transition and I have tried to have a female sim get pregnant on the day of her birthday, prior to the notification. It was unsuccessful, and I have tried this several times. When you add this to the information BellaClo provided above, this leads me to believe that this decision might be locked in before you get the birthday message.
When you consider the concept of programming efficiency, it would require fewer lines of code to have a single subroutine that makes these decisions all at once, as opposed to several subroutines that make single decisions separately at different times. The most logical time to make these decisions (and probably many others) would be when the day changes.
However, this is just an untested theory.