As an injection point, ExternalSet is certainly more flexible. as it may parameterize its results at evaluation time. Moving it to org.openrdf.query.algebra as a standard query node would make it the first option for such tasks.
ExternalSet is used in Alibaba's optimistic repository and in uSeekM for dynamically injecting solutions into a running query. It's indeed more flexible than BindingSetAssignment, since BindingSetAssignment expects a fixed known set of solutions to inject. ExternalSet needs to be subclassed to actually do something (e.g. ExternalModel in Alibaba).
BindingSetAssignment could possibly haven been modelled as a subclass of ExternalSet. Likely Service (for federated services) could also have been modelled as a subclass of ExternalSet.