If a return_property is null, crm_fetch_contact will not return an element. i.e. If there is no middle name for a contact, this contact will not have a [middle_name] element. This means that the contacts might have a different number of elements. This makes creating custom CSV files a pain.
Since return_properties are explicitly defined, it would make sense to have an element for each return property, even if null.