Button with Multiple Operations/Functionality
You have to create custom Operator class and register it.
Inside the operator you have to check if the object has the modifier or not. If it is not then add or else remove it.
Then replace the YourOperator.bl_idname  with "object.modifier_add".

Added shade smooth and flat toggle.
For shortcut you can click on the button and "add shortcut".
Note: Your Operator.bl_idname have to give blender some idea of what group the shortcut should be added to. Otherwise the "add shortcut" button won't appear.

import bpy

class SubsurfOperator(bpy.types.Operator):
    bl_idname = "object.toggle_subsurf"
    bl_label = "Toggle Subsurf"
    bl_options = {'REGISTER', 'UNDO'}

    def execute(self, context):
        mods = bpy.context.object.modifiers
        mod_type = 'SUBSURF'
        mod_name = None
        for mod in mods:
            if mod.type == mod_type:
                mod_name = mod.name
                break
        if mod_name != None:
            bpy.ops.object.modifier_remove(modifier=mod_name)
            bpy.ops.object.shade_flat()
        else:
            bpy.ops.object.modifier_add(type=mod_type)
            bpy.ops.object.shade_smooth()

        return {'FINISHED'}


class CustomPanel(bpy.types.Panel):
    """A Custom Panel in the Properties Toolbar"""
    bl_label = "V3"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'TOOLS'


    def draw(self, context):
        layout = self.layout

        obj = context.object

        row = layout.row()

        # here is your operator

        row.operator(SubsurfOperator.bl_idname, text= SubsurfOperator.bl_label, icon = "MOD_SUBSURF")

        row.prop(bpy.context.space_data.overlay, 'show_cursor', text = "3D cursor", toggle = True)
        row = layout.row()
        row.operator("object.modifier_add", text= "Subsurf", icon = "MOD_SUBSURF").type="SUBSURF" 

# requires to register classes
from bpy.utils import register_class, unregister_class

# Class list to register
_classes = [
    SubsurfOperator,
    CustomPanel
]

def register():
    for cls in _classes:
        register_class(cls)

def unregister():
    for cls in _classes:
        unregister_class(cls)

if __name__ == "__main__":
    register()