Actually, my guess is that Editor.SelectAll with a filter, iterates the database and uses AcRxObject::IsA() to filter the set. Selection sets should always be slightly slower than explicitly iterating, as there's a whole host of other things that happen in this process, I.e. firing off selection events, persisting the state of the set, in case a select previous needed, etc. Plus the filter needs to be parsed through some sort of regex function.
In the case with .NET, using the 'as' keyword and a test for null is pretty efficient as its using the framework's type testing, so the object does not need to call the underlying AcRxObject::IsA() method.
Cheers