Apologies for taking so long to respond.
This is quite an old issue; it was originally logged as #785. The
solution you propose in (2) is closest to the originally proposed
solution.
However, #785 was closed when #6095 (m2m intermediate tables) was
introduced; rather than add lots of new parameters to ManyToManyField,
the decision was made to use a manually created m2m through model for
the purposes of table customization.
In this case, the situation you describe in (1) is a bug -- a simple
through model *should* be able to use the MultipleSelect widget, but
can't.
I'm inclined to call this an extension of #9475 -- a proposal to
ensure that the add()/remove() shortcuts continue to work with m2m
fields if the through model doesn't add anything beyond the basic
foreign keys to other models. At present, if you manually define a
through model, you lose the add()/remove() shortcuts on the m2m
relation. However, this limitation is only strictly required if the
through model has addition fields with non-default/non-nullable
values. This is essentially the same condition that would be
preventing the use of the MultipleSelect widget in admin.
Yours,
Russ Magee %-)