What is the best way for me to change multiple paths or values on an object with multiple variables for each one?
Use a Collection Property



Set up the properties. 

The number of paths is made a scene property.  When it is updated it adds or removes a node to each scene objects paths collection.

Put all the relevant path node info in a property group.

Add a collection of that type to the object type.

Easiest explained by way of example, run the script below, 

import bpy

from bpy.types import PropertyGroup
from bpy.props import (FloatProperty,
                      CollectionProperty,
                      IntProperty,
                      BoolProperty,
                      )

class PathNode(PropertyGroup):
    minvar: FloatProperty()
    maxvar: FloatProperty()
    randomize: BoolProperty()

def adjust_paths(ob, paths):
    while len(ob.paths) &gt; paths:
        ob.paths.remove(len(ob.paths) - 1)
    while len(ob.paths) &lt; paths:
        ob.paths.add()

def update_paths(self, context):
    for o in self.objects:
        adjust_paths(o, self.paths)

classes = (PathNode,)

def register():
    for cls in classes:
        bpy.utils.register_class(cls)
    bpy.types.Scene.paths = IntProperty(
            min=0,
            soft_max=10,
            update=update_paths)
    bpy.types.Object.paths = CollectionProperty(type=PathNode)

if __name__ == "__main__":
    register()


A draw method, to add to layout code.

    def draw(self, context):
        layout = self.layout
        scene = context.scene
        obj = context.object
        layout.prop(scene, "paths")
        for node in obj.paths:
            row = layout.row()
            row.prop(node, "minvar")
            row.prop(node, "maxvar")
            row.prop(node, "randomize")


Note with scene.paths will need some type of "refresh" operator if a new object is added.  A simple test is search for any object whose paths length doesn't match scene.paths

Alternatively the paths int could be associated on a per object basis so as each object can have a variable length collection.

This would involve changing update paths, since self is now an object, not the scene

def update_paths(self, context):
    adjust_paths(self, self.num_paths)


and instead of the scene property for path length, an object property instead.

    bpy.types.Object.num_paths = IntProperty(
            min=0,
            soft_max=10,
            update=update_paths)


and in draw method, the object property rather than the scene.

    layout.prop(obj, "num_paths")


Because of the update method, code below will make sure all objects in scene have 10 paths

for o in scene.objects:
    o.num_paths = 10


Documentation for CollectionProperty (CRUD methods)

Collections can also be laid out with bpy.types.UIList akin to materials and vertex groups.

Create an interface which is similar to the material list box