R.J.
Could he be tired? Do they happen more towards the end of the day? I he getting enough sleep at night? Has he recently dropped his nap or reduced the number of hours he's sleeping per day?
Or, maybe stressed? Have their been any recent changes or disruptions to his routine?
I haven't had personal experience, but these are the first two things that came to mind while reading your post...
ETA: Or maybe acting out for attention? Has his sister required more attention from you lately?
Again, ETA: Have you tried giving him warning about what is going to happen by telling him the next 2 or 3 steps and then repeating as you complete a step?
For example, saving washing/rinsing his hair until the LAST thing before you pull the plug to drain the water, and 5 minutes before you wash his hair let him know, "Okay, in 5 minutes, I am going to wash your hair, then I am going to rinse out the bubbles, then I need you to (or I am going to) pull the plug to let the water out." Then repeat the next steps after you shampoo his hair, then remind him what you were going to do after the rinse. Maybe he feels like you are springing it on him? And by using the activities as a "time line" for him, it could make it easier for him to understand what is going on now, and what will happen next (since time is still kind of an abstract concept at 3).
It could also be some combination of these, surprised when tired after a long day. Or, disruption in his perceived routine on a day when his sister requires more attention...
Good luck! Hope something suggested here helps!