The current behavior is correct.
Setting a FilterDescriptor with a DoesNotContain operator results in creating a NOT LIKE expression, e.g. like this one: "[Region] NOT LIKE '%SP%'". With such an expression any NULL values should be filtered. This scenario can be tested directly in SQL server by running the following query against the Customers table of the Northwind database:
SELECT * FROM [NORTHWND].[dbo].[Customers]
Where ([Region] NOT LIKE '%SP%')
With the expression above all records with Region equalling NULL are filtered. A similar question is also discussed here: https://stackoverflow.com/questions/22818070/behaviour-of-not-like-with-null-values.
"Comparisons with NULL not using IS NULL or IS NOT NULL return NULL instead of true or false in most/all database systems."