Should fields that are set to Not Null also have a constraint refusing empty strings?
If I'm expecting the value of the field to be not null, shouldn't I also always have a constraint that does not allow for zero length strings or space only strings


Yes.  Yes you should.  

It's ANSI standard behavior to enable storing empty strings, but that doesn't mean it's a good idea.  And you especially should not allow both Null and '' in a column.

And note that because strings are compared without trailing spaces, 

 check (SomeCol&lt;&gt;'')


suffices for both.