When your script creates the new record that new record becomes the last record and thus the go to record/request/page [next ; exit after last] script step then executes from the last record and your loop exits on the first record.
The "unsort" step and the Go to layout step inside the loop, BTW, are unecessary as they have no effect on the results of your script.
Try it this way:
Go to Layout ["Table_1_Layout" (Table_1)]
Enter Find mode 
Set Field [Table_1 :: COB_ID_FK; $$Search_Variable_1]
Set Field [Table_1 :: COB_ID_Type; $$Search_Variable_2]
Set Error Capture [on]
Perform Find 
If [ Get ( FoundCount ) //records were found ]
Go to Records / Request/Page [First]
Set Variable [$Person_ID; Value: Table_1 :: Personnel_ID_FK
New Record / Request
Set Field [Table_1_Layout :: Type; $$Type
Set Field [Table_1_Layout :: Personnel; $Person_ID]
Set Field [Table_1_Layout :: Inventory_ID_FK; $$Search_Variable_1
Go To Record/Request/Page [First]
Exit Loop If [ Get ( FoundCount ) = 0 ]
Show Custom Dialog ["No records were found..."]
Thanks, PhilModJunk. Perfect. I've got a couple of minor bugs floating around, but it's got something to do with my variables getting scrambled. Your script is just what I needed. Much cleaner than what I had going on.