“Test Tag” is deleted from OmniFocus entirely, which was certainly a surprise.

In general manipulating task tags seems flaky and weird in ScriptingBridge, despite the fact that it seems to vaguely work in AppleScript. Is this just a bug or is there some subtlety I’m not seeing here?

Are you running in circles with one line of code? You find the object with the tag and remove the tag from the object all in the same line. What happens when you find the objects with the tag, set that result to an object/variable, and then remove the tags from the objects? IOW, use two lines of code.