Yes, I would say it makes sense considering the scenario as you described it.
In this situation, you use "войдите" when someone is already about to enter waiting for you to open the door for him.
On the contrary, "зайдите" is better when someone is outside and you see him hesitating whether to enter your home or to stay outside (if you prefer to talk to him outside). Actually, "заходить/зайти" (as opposed to "входить/войти") carries an additional nuance of "making a very short visit", just maybe for a few minutes to have a talk. So, if your guest wants to talk to you (no matter where, inside or outside), you have two options: 1) to exit your home to talk with him; 2) to invite him for a short visit by "зайдите". Although, "войдите" is not impossible in this situation, but "зайдите" definitely fits better.
And yes, if someone is already knocking at the door, he is supposedly intended to enter your home. So, you invite him with "войдите" (come in). If you said "зайдите" in this situation, it would sound as you limit his time of visit by a few minutes only, and then he must leave. Which is definitely impolite if someone comes to see you.