Will `/scoreboard players tag` remove tags from ineligible players/entities that were previously tagged?
No, the tag won't be removed automatically. You can test this yourself by placing the following command in your command block chain:
/tell @p[tag=InAir] Jumping
After jumping the first time, you will continuously receive the "Jumping" message, even after you return to the ground.
What you need to do, similar to what you've done in the past with scoreboard objectives used in boolean tests, is clear the tags of everyone before reapplying them to those you want tagged. In your example, you'd use the following command:
/scoreboard players tag @a remove InAir
which is the obvious counterpart to the the add
version of the command, but that's not stated in the wiki.
I should note that I haven't tested to see if the remove
version also accepts the data tag, but I suspect it does. That would allow for some interesting logic.