Я видел, как это делалось в обе стороны. То, что становится уродливым с одним потоком на каждый плагин, так это то, что вы начинаете полагаться на идею, что «только один поток когда-либо касается моего плагина», а затем кто-то делает ошибку, когда поток одного плагина идет и касается другого плагина (хотя замысловатая обработка событий) или что-то подобное). Тогда вы получите очень трудные для отслеживания условия гонки.
Подход, предложенный @ Reed-Copsey, гораздо чище, но если вам нужно использовать один из двух упомянутых вами подходов, то использование пула потоков и соответствующая блокировка в будущем избавят вас от душевных страданий. Это особенно применимо, если у вас есть несколько членов команды, работающих над несколькими аспектами проекта.