Some of his behavior may be imitative of the kids he saw in camp, but my best bet is that it's related to whatever is coming around the bend. Is he starting kindergarten or a new pre-K program? If so, this is very typical behavior for a kid who is both excited and anxious about the upcoming change in his life: He's wondering if he's "grown up" enough. When he feels strong and competent -- the good, rational behavior you're seeing -- he's likely concluding, "You know, I'm gonna be fine, I can handle this." When he acts out, he's likely worried about any number of things, from, "If I'm so grown-up, will mom and dad still take care of me?," to, "If I can't be grown up, what will happen?" And the biggest problem? He doesn't have a clue what "grown up" means.
If I'm off-base and this isn't about the transition to kindergarten, is there some other change in your lives that can be causing stress at home? Typically with a child this age, this kind of acting out behavior is due to feeling a discrepancy between wanting to be more independent and fearing that he doesn't have the skills he needs.
Pretend he's having a conversation with himself: "OMG! What if I can't do this? How do I know mom and dad will still take care of me? I gotta find out. I know. I'll act as bad as I can! Then I can see." And then what happens? Mom and dad are angry! They're impose penalties!
You're feeding into his worst fear: "OMG! They won't take care of me! Maybe they won't love me anymore." What happens next? He's gotta act out even more, to see when or if you will still take care of him. (Again, this is subjective, from his perspective.)
Stop the cycle:
Reinforce positive behavior, especially when he shows that he can use his language or perform skills that were once too hard for him.
Label his feelings for him: "You must be feeling really angry/upset/frustrated to behave so badly....." This is especially helpful if you can anticipate a meltdown and stop if from happening.
Offer him alternative, appropriate behavior: "When you're feeling angry, you can...."
Be clear: His behavior is bad. He's not a bad boy.
Impose immediate consequences: "Oh! You spit at me! I can't play with you when you spit." Get up from where you are, leave the scene right away. He'll be very unhappy. Tell him, "When you can play without spitting, we can try again." Repeat and repeat -- calmly, matter-of-factly and immediately -- if he repeats the offensive behavior. This is a far more powerful learning tool than the removal of any privilege.
Here are two books I can recommend: "No! Why kids -- of all ages -- need to hear it and ways parents can say it," by David Walsh; "How to talk so kids will listen & listen so kids will talk," by Adele Faber & Elaine Mazlish.