> I wondered about this, but how would it know that you didn't really want to store all zeroes in that block?
Because it's the same thing. There's no point in actually storing zeroes -- you could just mark the block as unused instead, so if later read, it would read back as zeroes.
> When you read back from it you might find that it's been re-used in the meantime and filled with something else
SSD maintains a mapping between logical disk blocks and physical flash blocks. If a logical block is marked as unmapped, it just doesn't use any physical space at all. SSD can't reuse your logical block since it doesn't "use" logical blocks -- it uses physical flash blocks.
> the SSD firmware would complain that the (logical) block you are requesting doesn't currently map to any (physical) block.
It would return zeroes, since the block is empty (unmapped). And that's the intent of it.