How can I copy soft-body settings to other objects?
Despite the settings being presented as a unified collection, there is some inconsistency within the physics settings. The force field, collision and rigid body settings adjust object properties, while the others are modifier properties. While the distinction may seem small it alters the location of settings when trying to access them from python.

If we set obj = bpy.context.active_object then

# force field settings -
obj.field.strength = 1.4
# collision settings
obj.collision.stickiness = 0.4


While modifier properties belong inside the modifier settings data -

# cloth
obj.modifiers["Cloth"].settings.mass = 0.4
# soft body
obj.modifiers["Softbody"].settings.friction = 0.6


We can create a short script to copy the soft body settings from the active object to selected objects.

import bpy

"""
Copy soft body settings from active object to selected objects
"""

srcSoftBody = bpy.context.active_object.modifiers['Softbody']

def mod_copy(source, target):
    for attr in dir(source):
        if attr == 'effector_weights':
            mod_copy(source.effector_weights,target.effector_weights)
        elif not attr.startswith('__'):
            try:
                setattr(target, attr, getattr(source, attr))
            except:
                pass

for obj in bpy.context.selected_objects:
    if obj is not srcobj:
        mod_copy(srcSoftBody.settings,obj.modifiers['Softbody'].settings)


With some small adjustment this could be adapted to be used for other physics settings. While fluid and cloth should work with adjusting the modifier name, smoke and dynamic paint have settings in multiple groups, eg instead of settings smoke uses domain_settings, flow_settings, and coll_settings