Except I don't want the big explosion. Is there any way to avoid it? Or once he is winding up for it, is it unavoidable?
Yes and no.
In simple terms, when he feels bad he looks to those close to him to offload the pain (e.g., frustration, disappointment, etc.). You are that person. It also sounds like you have been overly generous with him - rescuing him - and feels trapped by it.
You can't solve that with logic or long term plans. Its all about behavior and short term, episodic, reaction.
You want to respond with a constructive reaction. So let's take the dog. When he says,
"this darn dog you got me is making me late for work, #$#$". What do you hear and what do you say?Naturally, most of us would be tense for it to happen (triggery) and ready to jump to you own defense when it does (it's not my fault that... .and some statement about responsibility).
See how this is a cycle of conflict. He unloads and pushes his frustration on you. You are on high alert and correct him, defend yourself, fight back (even if passively) .
Another possible reaction (your have to try these trial and error to see what works is),
"He messed in the house again, oh man, that sucks. And you were late for your appointment. Wow. What happened? " See what I'm saying?