I'm not sure about the lag, as I have never experienced myself, but the thing with double commands (pressing left and right at the same time) is easy and is just a hard-coded issue. I'll make a guess here as to how Zun's coded it and you can sorta understand why is that.
You character has some numeric variables such as FocusedSpeed and UnfocusedSpeed. If it's behaving like this is because Zun is probably using also some logic variables (true/false), in this case particularly probably something like: IsMovingLeft, IsMovingRight, IsMovingUp, IsMovingDown, IsFocused.
The game update loop (which updates all numeric variables for that frame before it gets to be drawn onto the screen) is likely to work in two steps. First he captures the user input, to know which keys are pressed, altering variables as necessary (If UP is pressed, set IsMovingUp to TRUE....). After that it goes into the main update loop.
This part of the main update loop is probably what causes that. Seeing what is happening he's likely to be doing something like this:
If player is Focused: Speed is FocusedSpeed
If not: Speed is Unfocused Speed.
If Player is moving horizontal, then:
If player is MovingRight: Position is CurrentPosition + SpeedHorizontal
If not (he is moving left): Position is CurrentPosition - SpeedHorizontal
and blah.
About the lag itself I don't really know what might be happening but I don't remember experiencing it either.