When tokens are used in the "Variable Name / Token" field, the comparison is performed against the literal text returned by those tokens, which cannot be null (the internal value/lack of value that is represented by VoiceAttack as "Not set") thus the "Has Been Set" or "Has Not Been Set" operators will always evaluate to true and false, respectively.
You'll need to compare against the literal text "Not set" (using the "Equals" operator) instead.
This does mean there is no method to differentiate between a text variable that has not been set, or one that has been set to the literal text "Not set".