If you define a CFC argument as being required="false", and then do not pass it in, it will, of course, return false if you do isDefined("foo") or isDefined("arguments.foo"). However, if you cfdump the arguments scope, you can clearly see foo (or whatever the name of your argument was) in the structure. The value is "[undefined struct value]", which to mean smells like null, but CF has no real support null.