А) Хорошо, если у вас нет очень длинного списка. Будет очень неудобно использовать, если у вас много вещей. Плохо, потому что это не для поиска, в отличие от варианта B.
B) Хорошо, потому что это не потребует от пользователя понимания удержания управления. Из-за этого пользователь также не сможет случайно очистить свой выбор, что, очевидно, является хорошей вещью. Это также будет отображать гораздо более четко, какие параметры вы выбрали. Хорошо, потому что вы можете сгруппировать связанные параметры под одним заголовком или другой графической индикацией. Этот подход будет работать без JS, за исключением кнопки «выбрать все», кнопка «выбрать ни одну» может быть выполнена с помощью ввода type = «reset».
C) Я думаю, что это может быть хорошо, если пользователь явно добавляет в список вместо , выбирая опции. Но, как вы говорите, он не будет работать без JS. Я бы рассмотрел A и B вместо этого. Также не доступен для поиска, если вы не предоставите пользовательское поле фильтра (которое опять-таки зависит от JS)