Claude gave me this answer... it was longer but I can't post it all..
Looking at your code, I can see the issue. The delete_transient() function is being called inside the pl_clear_db() function, which only runs when you manually call it. However, the deactivation hook is registered to call pl_clear_db, but this function definition needs to be available when the plugin is deactivated.
The problem is likely one of these:
The function isn't being executed during deactivation - Plugin deactivation hooks sometimes don't execute the way you expect
The transients have already been deleted before this runs - WordPress might be clearing some data first