Script only running on Active Object, not whole Selection?
Set the active object in the loop, as it appears bpy.ops.mesh.customdata_custom_splitnormals_clear only works on the active object. Not on all selected.

import bpy

context = bpy.context
scene = context.scene

selected_mesh_objects = [o for o in context.selected_objects if o.type == 'MESH']

ao = context.active_object

for o in selected_mesh_objects:
    scene.objects.active = o
    r = bpy.ops.mesh.customdata_custom_splitnormals_clear()
    print(o.name, r)

# change ao back to original   
scene.objects.active = ao


Note added print statement with name and operator "result".  A {'FINISHED'} set will indicate object had custom split normals and they have been removed.