Hi Max,
I think that the primary thing to keep in mind here is that loading gmail data is a pull operation (similar to what would happen with Firebase Database if you went offline and came back). However, FCM messages are a push operation (the server notifies the client of changes; the client doesn't say, "Hey, got any data for me?").
It's probably way out of band for FCM to try and deliver messages to every offline client on a smallish interval such as seconds. Thus, it probably uses a back-off retry or something similar. If you've been offline all night, I'd expect some delay before they arrive. Note that this is similar to how some SMS carries work as well. If my phone is off for a night, it can be several hours before all my SMS messages sync.
That said, there may be room for improvement here. Perhaps our brilliant FCM experts could find a way for the client to let us know when it's back and grab anything outstanding? I'll send this over to them for discussion and see if there's a feature request here.
☼, Kato