You are correct -- there is no background garbage collection when the drive is idling. The "trim" command merely lets the firmware know which logical block addresses (LBAs) no longer contain valid data ("dead" data).
When writes to the drive are done, the FW chooses where to write this data. This is when the position to write this data is selected and various pieces of of "dead" data are shuffled and eventually removed.
You can think of it as the SSD Optimizer uses Trim to effectively communicate more of the "dead" data, which will be defragged as part of subsequent writes.