This is not a Crystal "feature" it's the way that SQL works, you ALWAYS have to test for Is Null BEFORE you test for a value. This is because null is not really a value, it's the absence of a value. If you compare a null with some value, the result is null instead of false like you would expect.
So, if {Address.IsDefault} is null, you're expression above evaluates to
null OR true
which then evaluates to null because you're comparing to null.
When evaluating an OR statement, the comparison processing stops when the first true condition is reached. So, when you put the IsNull first, it evaluates to true and processing of the statement stops before you get to the comparison to null.
Make sense?
-Dell