(1) I never loop upon added_items.
(2) using do Shell Script we may move a group of files in a single call.
on adding folder items to this_folder after receiving added_items
set lesParams to {{".htm", "drive1:folderstuff:f1"}, {".txt", "drive1:folderstuff:f2"}, {".jpg", "drive1:folderstuff:f3"}}
repeat with i from 1 to count lesParams
tell application "System Events"
set lesFichiers to (path of every file of this_folder whose name ends with item 1 of item i of lesParams)
end tell
set lesFichiersqp to {}
repeat with unFichier in lesFichiers
set end of lesFichiersqp to quoted form of POSIX path of unFichier
end repeat
set lesFichiersqp to my recolle(lesFichiersqp, space)
do shell script "mv " & lesFichiersqp & space & quoted form of POSIX path of item 2 of item i of lesParams
end repeat
end adding folder items to
#=====
on recolle(l, d)
local oTIDs, t
set {oTIDs, AppleScript's text item delimiters} to {AppleScript's text item delimiters, d}
set t to "" & l
set AppleScript's text item delimiters to oTIDs
return t
end recolle
#=====
You may replace the folder actions script by an idle one which would scan the folder according to you wanted frequency.