I've started using the List function to build such a list of values:
Set Field [Email::Address To ; List ( Email::Address To ; Address::Addressee ) ]
It does exactly the same thing as your script, just eliminates the extra If - Else - End if code.
Will return serve as the correct delimitter between addresses?
You may need to follow up with:
Set Field [Email::Address To ; Substitute ( Email::Address To ; ¶ ; "; " ) ]
To turn the returns into ; or , to suit the requirements of your specific email client.
You have done it again much appreciated