How to get modifiers of instanced objects to to refer to their respective object?
With a script.

If make the particle system only have a one frame lifetime then all will be created on frame 1



After pressing Convert (make real) will notice that Lattice.001 is with Suzanne.001, Lattice.002 is with Suzanne.002, ...  we can use that.

Also give each lattice its own data so editing one doesn't affect all.

Here is a script  select the plane and run script

import bpy
context = bpy.context
scene = context.scene


ob = context.object # the plane
# make dupes real
bpy.ops.object.duplicates_make_real()
# remove the ps
ob.modifiers.remove(ob.modifiers[0])


lattices = sorted(l.name for l in scene.objects if l.type == 'LATTICE'
        and l.name.startswith("Lattice")
        and l.name[-3:].isnumeric())

suzannes = sorted(s.name for s in scene.objects if s.type == 'MESH'
        and s.name.startswith("Suzanne")
        and s.name[-3:].isnumeric())

for ln, sn in zip(lattices, suzannes):
    suzanne = scene.objects.get(sn)
    lattice = scene.objects.get(ln)
    # give each lattice its own data
    lattice.data = lattice.data.copy()
    # set modifier to lattice 
    suzanne.modifiers[0].object = lattice


Note: Don't have any other objects other than originals starting with  "Suzanne" or "Lattice" in the scene.

Worth noting could extend this to look for collection instances in the particle system settings and get the object names from the collection objects.