This should work.
I didn’t test it but should be OK:
on adding folder items to this_folder after receiving these_items -- this_folder is an alias
set subFolder to (this_folder as string) & "SubFolderName"
repeat with aFile in these_items
tell application "Finder"
if aFile's kind is "PDF document" then -- check if is a PDF
move (aFile as alias) to subFolder with replacing
end adding folder items to
It does not enter into an infinite loop. Just tested, and it worked as expected. You trigger the infinite loop only if you change the name of the drooped file. But not if you move the file into a subfolder.
The “Folder Action” only monitors the folder where you drop your PDF. Then it triggers one run of the script, and move the PDF into a subfolder, which is NOT monitored.
At least on my Mac with Big Sur …