you could have the script log the list of before and after primary keys, or the difference (if any)
We do have over 60,000 records and not sure if that would be a good idea to have the server check constantly for the difference in records.
if performance isn't a big problem, you can create a script that deletes records and logs the occurrence - Get(LayoutName), Get(FoundCount), Get(UserName); Get(SystemIPAddress), etc.
You can have this script receive a parameter instructing whether or not to delete a single record, or the found set. You can also write warning dialogs, with different logic for different tables.
(If you haven't already, please see Perform Script On Server.)
edit: I realize I'm repeating a lot of what you said, I'm suggesting never using the script step Delete, except in this new Delete script, if you want to log all occurrences.
<< and if was really the server that deleted it during a script run.>>
so it doesn't have to 'check constantly'
It only takes 500 msec to parse the lists of before and after keys on 60,000 records
As I established with a quick test on 60,000 records, and simple eSQL
Adding a script line to evaluate the difference will add some additional sec