I think this points to a larger problem whereby there is no guarantee that any entity ECA will receive a complete GenericValue representing the entire record.
For example GenericDelegator.removeByPrimaryKey() only passes the primary key fields to the ECA rule runner and any ECAs that depend on other non-pk fields won't be able to evaluate their condition properly.
I'm not sure what the full solution would look like, it would be good to get some thoughts of others on this.
We could consider having EntityEcaCondition.eval() perform a db lookup if any of the fields it needs to evaluate are missing. If they are missing it could fully populate the entity with the missing fields so that a lookup is only required at most once per delegator operation. If no ECA conditions require any missing fields then the lookup wouldn't be performed, so the performance penalty would only be incurred when necessary.