It's likely because of the scripts underneath.
"Time-ago" libraries, if one could call them that way, typically work by computing the (ideally absolute) time difference and turning that in a human readable format - 45 min ago, 2 hours ago, etc. In this case one caption is about the time, and the other is about days. Odds are that anything less than 24h would then be converted to today, 24-48h would be yesterday, etc. Edit: as confirmed in this thread that Chirlu dug out.
It's probably a lesser evil, btw. To give you a real life example of how thorny things can get, picture yourself in Europe, emailing someone in Australia. It's 12:05am but you haven't checked the time before clicking send and going to bed; you've asked if they can do a short meeting tomorrow.
Did you mean tomorrow as in when you'll wake up (which will technically be today for both of you)? Tomorrow your date (which will technically be after tomorrow for both)? Tomorrow their date (which can turn out to be anything between today your date if you take a late call to after tomorrow for both if they do an evening call)?
By the same token: you hop over to Stack Exchange before going to sleep. It's now 12:10am your time. Was a question posted 20 minutes earlier posted today (as you'd likely expect, since in your mind you haven't slept yet) or yesterday (which would be technically correct but awkward)?