Here's a script that iterates over each mesh island and assigns its vertices into a new vertex group.

[![enter image description here][1]][1]

It's based on a recursive function since the blender API currently doesn't provide (as far as I know) any built in way to get all mesh islands.

    import bpy, bmesh
    
    def find_island_and_assign_vgroup( o, remaining ):
        ''' Recursive function that itertaes over mesh islands and assigns a new vertex group to each'''
    
        if len( remaining ) > 0:
            # Create bmesh object (must do this every time since vertex groups are created in object mode, which destroys the bm object
            bpy.ops.object.mode_set( mode = 'EDIT' )
            bm = bmesh.from_edit_mesh( o.data )
            bm.verts.ensure_lookup_table()
    
            bpy.ops.mesh.select_all( action = 'DESELECT' )
            bm.verts[ list(remaining)[0] ].select = True
            bm.select_flush( True )
            bpy.ops.mesh.select_linked()
    
            selected_verts = [ v.index for v in bm.verts if v.select ]
    
            # Add to a new vertex group
            bpy.ops.object.mode_set( mode = 'OBJECT' )
            vg = o.vertex_groups.new()
            vg.add( selected_verts, 1.0, 'ADD' )
    
            # Remove this island's verts from the vert list
            now_remaining = remaining - set( selected_verts )
    
            bm.free()
            find_island_and_assign_vgroup( o, now_remaining )
    
    o         = bpy.data.objects[ bpy.context.object.name ]
    all_verts = set( range( len( o.data.vertices ) ) )
    find_island_and_assign_vgroup( o, all_verts )


  [1]: https://i.sstatic.net/LyOdS.gif