Because you are willing to debate, even if just for a while, he's going to do it all the time. You have to decide before you speak, if the comment you are about to make is debatable. If the answer is no, then don't allow it. As much as we hate this line, it works.
"Because I said so!"
And then stop discussing it and expect action.
I agree completely. We've had this problem, too. It gets better after a while when the child finally realizes that there's no point in arguing. It doesn't go away, but it gets better.
I think that a willingness to challenge authority is a wonderful trait to have, provided a person learns when to challenge something and when to leave it alone. But for a four year old in the situations you've described, "Because I said so" seems appropriate.
I'm still learning, but I'm getting better.
Val