After I read this, I refined my google-fu a bit, and found this:
https://wiki.archlinux.org/title/Solid_state_drive#External_SSD_with_TRIM_support
Several USB-to-SATA bridge chips (like VL715, VL716 etc.) and also USB-to-PCIe bridge chips (like the JMicron JMS583 used in external NVMe enclosures like IB-1817M-C31) support TRIM-like commands that can be sent through the USB Attached SCSI driver (named “uas” under Linux).
But the kernel may not automatically detect this capability, and therefore might not use it. Assuming your block device in question is /dev/sdX, you can find out whether that is the case by using the command
# sg_readcap -l /dev/sdX
If in its output you find a line stating “Logical block provisioning: lbpme=0” then you know that the kernel assumes the device does not support “Logical Block Provisioning Management” because the (LBPME) bit is not set.
It goes on to describe further diagnostics. I’m going to play with this and see if I can get anything useful out of it.
You’ll need the sg3_utils
package from the repos to use the commands it lists.