YARN-8292 added handling of negative resources during the preemption calculation phase. That JIRA hard-coded it so that for inter-(cross-)queue preemption, the a single resource in the vector could go negative while calculating ideal assignments and preemptions. It also hard-coded it so that during intra-(in-)queue preemption calculations, no resource could not go negative. YARN-10613 made these options configurable.
However, in clusters where custom resources are defined, apps that don't use the extended resource won't be preempted.