When evaluating your statement, the runtime must first follow the reference to which the variable refers. Only then may it evaluate the referenced object to determine if it is indeed a string.
Since a null reference refers to no object, it is not a string. In fact, it is nothing at all.
You can use the typeof operator to get the Type object that corresponds to string, rather than compare a referenced object, if that's your ultimate goal.
This is actually the particular example given by Eric Lippert in a blog post on this very subject:
I've noticed that the is operator is inconsistent in C#. Check this out:
string s = null; // Clearly null is a legal value of type string
bool b = s is string; // But b is false!
What's up with that?
-- http://ericlippert.com/2013/05/30/what-the-meaning-of-is-is/
sis not a string, it's a null reference. If it referred to something, that something would be a string.isin the english language andisin the C# programming language.