System Information
Ubuntu 15.04 / Nvidia GTX970 (irrelevant)
Blender Version
Broken: 2.76 e9b9b88
Worked: (Unknown - probably a long standing issue)
Short description of error
In the interface the DataTransfer modifier lets the user select multiple transfer options by shift-clicking,
it appears the way this was implemented prevents setting multiple transfer options by script if they're on different properties.
vvvvvv Easiest way to understand the problem is to read and run the script below vvvvvv
(A longer description and the prior effort to resolve this can be found in this Blender SE post (which lead to no solution and one recommendation to report this as a bug)
http://blender.stackexchange.com/questions/39429/setting-enum-properties-across-multiple-interdependent-enum-properties-in-a-scri)
Exact steps for others to reproduce the error
In the default scene (with the cube still there) read and then run this script, observe what it prints:
import bpy
# Get the default cube, make it active, add DataTransfer modifier
cube = bpy.data.objects["Cube"]
bpy.context.scene.objects.active = cube
bpy.ops.object.modifier_add(type='DATA_TRANSFER')
# Enable transfer of sharp edges and UV seams on the modifier
cube.modifiers["DataTransfer"].data_types_edges = {'SHARP_EDGE', 'SEAM'}
print(cube.modifiers["DataTransfer"].data_types_edges) # returns {'SHARP_EDGE', 'SEAM'}
# Additionally enable transfer of UV coordinates on the modifier
cube.modifiers["DataTransfer"].data_types_loops_uv = {'UV'}
print(cube.modifiers["DataTransfer"].data_types_edges) # returns an empty set() now (!)
print(cube.modifiers["DataTransfer"].data_types_loops_uv) # returns {'UV'}