Whatever combination of things you do, be consistent and use the same phrases (stuck record).
DD turns 5 in 3 months, everyone thinks she is an angel, and up to now, she has been - so it's really wearing to come up against this all.the.time.
What I have done has worked for a reasonable period each time - am persisting. She has become inventively naughty about bedtime, so one weekend I said that the time she had wasted the night before meant she would go that late to a party. We spoke about it in terms of 'Do you think it took a long time (last night) or did you sort it out quickly?' and I put it in terms of being fair because of the time she had wasted. We also did something boring instead of party - not time out, it was sorting washing or similar. She kept asking me why...why...why and every time I said the same thing (then she kept moaning she knew that already, but I said that it was the same answer for the question).
I also quite like 'instant satisfaction' in the park, so when DD is good and doesn't make a fuss about going, comes when she is asked etc, you can say 'Oh, well since you've been so good, I think there is just time for another 3 goes' (or whatever) - it's a kind of surprise and good reward that lures them into repeating their behaviour!
It may also help to talk in more neutral moments over when it's great to be independent (where it is safe) and when you never mess about. Is there anything that might stretch him more in safe circumstances, like den building with big boxes or something?