The first one is most definitely as designed and it has been the configuration for a long time so it wouldn't be something we'd change. Saying that, I'm pretty sure the logic is backwards as in my tests, that matches nothing (PHP's stripos always returns false if nothing is entered as the needle). Given the description though, matching only empty values wouldn't really be an expected outcome, though I understand it may be desirable. What you want is "User value is", in which case an empty string would make sense (though a naive implementation would have some caveats).
The second case is theoretically one that we could flip to match nothing as well, on the basis that you haven't selected any values and to create a parallel with the text approach, though this is also a very long standing behavior so I don't think it's necessarily beneficial to change.
In both cases, the condition without something to check for is basically nonsensical, so arguments could be made about any approach being right or wrong. Given the description and also historical behavior, I'm going to call this essentially as designed/expected.