Finalmente encontré la solución a esto. El middleware no se activaba porque debe usar remove() , save() , etc. en las instancias del modelo, no en el modelo en sí.
Ejemplo:
Customer.remove({...}); no funcionará.
Customer.findOne({...}, function(err, customer) {
customer.remove();
});
funcionará y hará lo que esté en Customer.post('remove') .