rm doesn't actually modify the file. It does an unlink which removes the link from the filename to the file.
Essentially, a file can have 0 or more names linked to it. As long as a file has at least one name or at least one process with it open, it will persevere.
By contrast, shred actually writes to the underlying file.