I can't find any documentation on this, but contact soft credits (via Opportunity Contact Role > Account) rollups do not appear to consistently fire in real-time. Hard credits are running as expected as soon as the gift is closed. If I force rollups to recalculate by using the button on Accounts I can get the soft credit rollup to run, but I would have expected this to function the same as hard credits (triggered as soon as filter criteria are met aka Opportunity closes).
I'm curious if this is a bug or whether some types of rollups only run as scheduled jobs. If the former, I'll open a Case. If the latter, I'll revamp a bit of automation logic that checks giving totals when an Opp is closed in order to determine how acknowledgments are handled.
Thanks for any insight the community has to share!
I realize your question is from a while back, but in case it's still helpful - you can take a look at the CRLP_Rollup_TDTM class in the NPSP repository in github.
The comments state that it runs on Opportunities and Payments, which is why Soft Credits wouldn't roll up in real time, since I believe they are based on either Opportunity Contact Rolls or Partial Soft Credits.
Also, this trigger calls a queueable to run the rollup, which is asynchronous. So that would explain why the Flow logic was running before the Hard Credit rollups.