Scritping: rename while using bpy.ops.mesh.separate(type='MATERIAL')
This script will rename all separated objects according to the material applied to each. It assumes the object you want to split and rename is selected and active.

import bpy

bpy.ops.object.mode_set( mode = 'EDIT' )
bpy.ops.mesh.select_all( action = 'SELECT' )
bpy.ops.mesh.separate( type = 'MATERIAL' )    # Separate by material
bpy.ops.object.mode_set( mode = 'OBJECT' )

# After separating, all pieces are selected
for o in bpy.context.selected_objects:
    # Rename object by the material applied to it
    o.name = o.active_material.name