I've compared the queries from the two export variations. This difference seems the most significant to me:
Successful export: "SELECT contact_a.id as contact_id ..."
Unsuccessful export: "SELECT DISTINCT(contact_a.id) as contact_id ..."
Here's the full queries, successful version first:
SELECT contact_a.id as contact_id, contact_a.first_name as `first_name`, contact_a.middle_name as `middle_name`, contact_a.last_name as `last_name`, individual_prefix.value as individual_prefix_id, individual_prefix.label as individual_prefix, IF ( contact_a.contact_type = 'Individual', contact_a.organization_name, NULL ) as current_employer, civicrm_address.id as address_id, civicrm_address.street_address as `street_address`, civicrm_address.supplemental_address_1 as `supplemental_address_1`, civicrm_address.supplemental_address_2 as `supplemental_address_2`, civicrm_address.city as `city`, civicrm_address.postal_code as `postal_code`, civicrm_state_province.id as state_province_id, civicrm_state_province.abbreviation as `state_province`, civicrm_state_province.name as state_province_name, civicrm_country.id as country_id, civicrm_country.name as `country`, civicrm_phone.id as phone_id, civicrm_phone.phone_type_id as phone_type_id, civicrm_phone.phone as `phone`, civicrm_email.id as email_id, civicrm_email.email as `email`, civicrm_contribution.id as contribution_id, civicrm_contribution.receive_date as `receive_date`, civicrm_contribution.net_amount as `net_amount`, civicrm_contribution.contribution_recur_id as `contribution_recur_id`, civicrm_value_type_of_gift_1.id as civicrm_value_type_of_gift_1_id, civicrm_value_type_of_gift_1.would_you_like_your_donation_to__2 as custom_2, civicrm_value_type_of_gift_1.in_memory__in_honor_of_3 as custom_3, civicrm_value_type_of_gift_1.special_instructions_6 as custom_6, civicrm_value_type_of_gift_1.in_memory_or_honor_7 as custom_7 FROM civicrm_contact contact_a LEFT JOIN civicrm_address ON ( contact_a.id = civicrm_address.contact_id AND civicrm_address.is_primary = 1 ) LEFT JOIN civicrm_state_province ON civicrm_address.state_province_id = civicrm_state_province.id LEFT JOIN civicrm_country ON civicrm_address.country_id = civicrm_country.id LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) LEFT JOIN civicrm_phone ON (contact_a.id = civicrm_phone.contact_id AND civicrm_phone.is_primary = 1) LEFT JOIN civicrm_contribution ON civicrm_contribution.contact_id = contact_a.id
LEFT JOIN civicrm_value_type_of_gift_1 ON civicrm_value_type_of_gift_1.entity_id = civicrm_contribution.id LEFT JOIN civicrm_option_group option_group_prefix ON (option_group_prefix.name = 'individual_prefix') LEFT JOIN civicrm_option_value individual_prefix ON (contact_a.prefix_id = individual_prefix.value AND option_group_prefix.id = individual_prefix.option_group_id ) WHERE civicrm_contribution.id IN ( 272,274,275,347,349,351 ) LIMIT 10000, 10000ELECT contact_a.id as contact_id, contact_a.first_name as `first_name`, contact_a.middle_name as `middle_name`, contact_a.last_name as `last_name`, individual_prefix.value as individual_prefix_id, individual_prefix.label as individual_prefix, IF ( contact_a.contact_type = 'Individual', contact_a.organization_name, NULL ) as current_employer, civicrm_address.id as address_id, civicrm_address.street_address as `street_address`, civicrm_address.supplemental_address_1 as `supplemental_address_1`, civicrm_address.supplemental_address_2 as `supplemental_address_2`, civicrm_address.city as `city`, civicrm_address.postal_code as `postal_code`, civicrm_state_province.id as state_province_id, civicrm_state_province.abbreviation as `state_province`, civicrm_state_province.name as state_province_name, civicrm_country.id as country_id, civicrm_country.name as `country`, civicrm_phone.id as phone_id, civicrm_phone.phone_type_id as phone_type_id, civicrm_phone.phone as `phone`, civicrm_email.id as email_id, civicrm_email.email as `email`, civicrm_contribution.id as contribution_id, civicrm_contribution.receive_date as `receive_date`, civicrm_contribution.net_amount as `net_amount`, civicrm_contribution.contribution_recur_id as `contribution_recur_id`, civicrm_value_type_of_gift_1.id as civicrm_value_type_of_gift_1_id, civicrm_value_type_of_gift_1.would_you_like_your_donation_to__2 as custom_2, civicrm_value_type_of_gift_1.in_memory__in_honor_of_3 as custom_3, civicrm_value_type_of_gift_1.special_instructions_6 as custom_6, civicrm_value_type_of_gift_1.in_memory_or_honor_7 as custom_7 FROM civicrm_contact contact_a LEFT JOIN civicrm_address ON ( contact_a.id = civicrm_address.contact_id AND civicrm_address.is_primary = 1 ) LEFT JOIN civicrm_state_province ON civicrm_address.state_province_id = civicrm_state_province.id LEFT JOIN civicrm_country ON civicrm_address.country_id = civicrm_country.id LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) LEFT JOIN civicrm_phone ON (contact_a.id = civicrm_phone.contact_id AND civicrm_phone.is_primary = 1) LEFT JOIN civicrm_contribution ON civicrm_contribution.contact_id = contact_a.id
LEFT JOIN civicrm_value_type_of_gift_1 ON civicrm_value_type_of_gift_1.entity_id = civicrm_contribution.id LEFT JOIN civicrm_option_group option_group_prefix ON (option_group_prefix.name = 'individual_prefix') LEFT JOIN civicrm_option_value individual_prefix ON (contact_a.prefix_id = individual_prefix.value AND option_group_prefix.id = individual_prefix.option_group_id ) WHERE civicrm_contribution.id IN ( 272,274,275,347,349,351 ) LIMIT 10000, 10000
SELECT DISTINCT(contact_a.id) as contact_id, contact_a.first_name as `first_name`, contact_a.middle_name as `middle_name`, contact_a.last_name as `last_name`, individual_prefix.value as individual_prefix_id, individual_prefix.label as individual_prefix, IF ( contact_a.contact_type = 'Individual', contact_a.organization_name, NULL ) as current_employer, civicrm_address.id as address_id, civicrm_address.street_address as `street_address`, civicrm_address.supplemental_address_1 as `supplemental_address_1`, civicrm_address.supplemental_address_2 as `supplemental_address_2`, civicrm_address.city as `city`, civicrm_address.postal_code as `postal_code`, civicrm_state_province.id as state_province_id, civicrm_state_province.abbreviation as `state_province`, civicrm_state_province.name as state_province_name, civicrm_country.id as country_id, civicrm_country.name as `country`, civicrm_phone.id as phone_id, civicrm_phone.phone_type_id as phone_type_id, civicrm_phone.phone as `phone`, civicrm_email.id as email_id, civicrm_email.email as `email`, civicrm_contribution.id as contribution_id, civicrm_contribution.receive_date as `receive_date`, civicrm_contribution.net_amount as `net_amount`, civicrm_contribution.contribution_recur_id as `contribution_recur_id`, `Billing-location_type`.id as `Billing-location_type_id`, `Billing-location_type`.name as `Billing-location_type`, `Billing-address`.id as `Billing-address_id`, `Billing-address`.street_address as `Billing-street_address`, `Billing-address`.supplemental_address_1 as `Billing-supplemental_address_1`, `Billing-address`.supplemental_address_2 as `Billing-supplemental_address_2`, `Billing-address`.city as `Billing-city`, `Billing-state_province`.id as `Billing-state_province_id`, `Billing-state_province`.abbreviation as `Billing-state_province`, `Billing-address`.postal_code as `Billing-postal_code`, civicrm_value_type_of_gift_1.id as civicrm_value_type_of_gift_1_id, civicrm_value_type_of_gift_1.would_you_like_your_donation_to__2 as custom_2, civicrm_value_type_of_gift_1.in_memory__in_honor_of_3 as custom_3, civicrm_value_type_of_gift_1.special_instructions_6 as custom_6, civicrm_value_type_of_gift_1.in_memory_or_honor_7 as custom_7 FROM civicrm_contact contact_a
LEFT JOIN civicrm_address `Billing-address` ON (`Billing-address`.contact_id = contact_a.id AND `Billing-address`.location_type_id = 5) LEFT JOIN civicrm_address ON ( contact_a.id = civicrm_address.contact_id AND civicrm_address.is_primary = 1 )
LEFT JOIN civicrm_state_province `Billing-state_province` ON `Billing-state_province`.id = `Billing-address`.state_province_id LEFT JOIN civicrm_state_province ON civicrm_address.state_province_id = civicrm_state_province.id LEFT JOIN civicrm_country ON civicrm_address.country_id = civicrm_country.id LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) LEFT JOIN civicrm_phone ON (contact_a.id = civicrm_phone.contact_id AND civicrm_phone.is_primary = 1)
LEFT JOIN civicrm_location_type `Billing-location_type` ON ( ( `Billing-address`.location_type_id = `Billing-location_type`.id ) ) LEFT JOIN civicrm_contribution ON civicrm_contribution.contact_id = contact_a.id
LEFT JOIN civicrm_value_type_of_gift_1 ON civicrm_value_type_of_gift_1.entity_id = civicrm_contribution.id LEFT JOIN civicrm_option_group option_group_prefix ON (option_group_prefix.name = 'individual_prefix') LEFT JOIN civicrm_option_value individual_prefix ON (contact_a.prefix_id = individual_prefix.value AND option_group_prefix.id = individual_prefix.option_group_id ) WHERE civicrm_contribution.id IN ( 272,274,275,347,349,351 ) GROUP BY contact_a.id LIMIT 10000, 10000
I'm looking in the code for where this distinct is being called. Any help on this would be appreciated.