Projects are awesome, so we'd like to use them for everything. But in some case we'd like to enforce minimal rules about which can be selected.
For example, as you use a class of projects (same icon/color combination) to represent the affected code area (repository where the fix should land), you just want one of those areas to be specified at the same time on a given task, so that you can autoclose the task when that specific change lands.
Implementation-wise, you could for example mark certain projects as "unique" in which case only one of the "unique" projects in a given icon/color combination could be associated at the same time with any object.
The alternative here is to use advanced custom fields, but that would mean abandoning all the other benefits of Phabricator projects. Which would be sad.