I believe this is a JIRA bug.
I was filtering on component, and items were not showing up. My filter contained "component not in (thing1, thing2)". I have many items which component is not set (EMPTY). I finally was able to solve this issue with (component is EMPTY or component not in (thing1, thing2)). JQL should not filter out EMPTY when component not in is being used which is what I think is happening.
First, let me say that I agree with you; this should be a bug.
However, Atlassian has reviewed this as a "suggestion" recent;y and determined that they are not going to invest in addressing it. There is an explanation here: JRASERVER-23030 (Note this is valid for Cloud as well.)
The short answer is to use the workaround you've already shared.
Connect with like-minded Atlassian users at free events near you!Find an event
Connect with like-minded Atlassian users at free events near you!
Unfortunately there are no Community Events near you at the moment.Host an event
You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events