We have to talk a lot about giving other people space around here too.
For my ds (also 3.5) I find I have to be right in there distracting him, engaging with him, to get him to stop those kinds of behaviours. He usually gets all up in dd's face when he's bored and it's worse if he's also cranky/hungry/tired. When the kids are acting like that (even dd who is almost 7) I usually have to redirect them, suggest a new activity, engage in the activity with them, etc. And yes, sometimes it does reach the point where someone needs to leave the room.
Things also go more smoothly the sooner I intervene. In other words if possible I try to jump in at the v. first sign that things are going over the edge. I also try to be aware of "problem" times (say in the evening when everyone's tired) and instead of leaving the kids to "free play" I might suggest an activity we could do together (play a game, read a book, etc).
BTW we talk a lot about respecting people's space when we're *not* in the moment. When we *are* in the moment I'll just say something like "dd needs her space. Why don't we go over here and fill in the blank".
Another thought: if it's mostly in the evenings would it be possible for you and dh to divide and conquer? Maybe that could be special "daddy and dd time" when they take a walk (or whatever) while you do something with ds (read a book, etc).
Keep in mind that although your dd knows that this behaviour isn't ok, she still has seriously limited impulse control, so it's hard for her to stop herself. The more you can actively engage her the easier it will be for her to switch her focus.