As near as I can tell, you have a space between the quote marks in your first example. If you had put just two quote marks side-by-side without a space in between, then that would be similar to vbNullString.
try this and you will note that putting a space between the quote marks results in a LEN of 1 for cell A1. (By the way, you would not use quote marks around vbNullString as you did in your example)...:
Range("a1") = " "
Range("a2") = vbNullString
Range("b1") = "=len(a1)"
Range("b2") = "=len(a2)"