My interpretation (which does not imply endorsement) is that the majority of bf predicates are currently limited by domain and range of either Work or Instance, and the intent is that Work / Instance / HeldItem are intended (but not formally specified) to be disjoint. There have been many discussions on the list and elsewhere about whether a predicate is to be used on a Work or Instance, and how hard it is to generate that from MARC records. The resolution of that complexity is non-trivial and inevitably there will have to be trade-offs between purity and practicality.
R