They are deleted, but is not directly handled in the profile_delete function. It is handled by the photo module in response to an alert.
In admin.inc.php in the profile delete function your will see this near the bottom.
require_once(BX_DIRECTORY_PATH_CLASSES . 'BxDolAlerts.php');
$oZ = new BxDolAlerts('profile', 'delete', $ID);
$oZ->alert();
This creates an alert
All alerts are in the database in the tables sys_alerts and sys_alerts_handlers
So when this alert is created, dolphin will lookup all profile delete alerts and call the handler for each of them
In the case of the photos, the alert runs a service call function in the photos module like so, BxDolService::call('photos', 'response_profile_delete', array($this)); and it handles deleting the photos.
So. calling profile_delete is really all you need to do in your module. The alert it generates will handle deleting of items not specifically deleted by that function.
It is done this way for a reason. The profile delete function only specifically deletes items that exist regardless of what modules are installed. The rest are handled by the alert system. This way no attempt to delete photos is done if the photo module is not installed.
So each module that has to remove things when a profile is deleted will create alert entries in the database when the module is installed so the alert system will call the modules delete functions. Those alerts are removed when the module is uninstalled so the delete functions for that module are no longer called.
I am sure i did not do a very good job of explaining that, but that's how it works.