That is correct. ListNanny does not actually delete any messages from the .mbx file. It only deletes individual .eml files.
Internally, ListNanny creates a fake filename, based upon the mbx file, simply for tracking purposes. ListNanny should actually throw an exception if you try to delete this non-existant file.
The only way for you to remove messages from the .mbx file, is for you to remove code to do that yourself.
To determine which message you are on, to delete, you should be able to get access to the ParseNDRDirectoryEventArgs.Index property.
If you are going to remove messages from the .mbx file, I would recommend keeping track of all indexes of the messages you want to remove.
Then, start removing messages from the highest index, to the lowest. This will prevent the internall messages of the mbx file from being reindexed.