A ProjectChangeListener added to a client does not appear to receive any notification of deleted resources.
The Project object passed to projectUpdated appears to be a complete project rather than a diff like it is for designers, so it simply does not contain any reference to the deleted resource, either in getResources() or getDeletedResources(). (As expected, projectResourceModified never appears to be called for a client).
It would seem to be a reasonable design decision that clients always receive complete projects. However, this can be a problem for modules which have their own state to keep in sync. Is there any way to tell if a Project is a diff or a complete project?