Devo carregar bibliotecas de terceiros do fornecedor ou do cdn?

Há uma pequena área cinzenta entre os dois. Você pode configurar o Discourse para servir ativos, incluindo JS de temas/plugins, por meio de um CDN. Assim, mesmo que seu plugin carregue a biblioteca externa em /vendor, ela será carregada a partir do CDN que você configurar no Discourse. No entanto, isso é um CDN privado.

Dito isso, não acho que seja disso que você está falando. Você está se referindo a serviços como https://cdnjs.com e https://www.jsdelivr.com, e isso é um tópico ligeiramente diferente — um CDN público.

Serviços como o cdnjs possuem uma ampla rede de servidores dedicados a esse tipo de coisa.

Então,

Eles podem ser mais rápidos e ajudam a reduzir a carga no seu servidor.

Mas… esse benefício de velocidade também está disponível se você usar /vendor em um site que configurou o Discourse para usar um CDN privado.

Além disso, em relação à largura de banda, a maioria das bibliotecas JS externas tem menos de 20 KB. Então, embora você obtenha algumas economias… isso não é realmente um ponto crucial, a menos que seu site tenha centenas de milhares de visualizações por dia.

Uma das vantagens de usar algo como o cdnjs é que eles servem o mesmo arquivo e incluem cabeçalhos de cache.

O que isso significa? Bem, vamos usar o jQuery, por exemplo.

Muitos sites usam jQuery, e muitos deles usam o cdnjs para distribuir o jQuery. Quando o cdnjs entrega o arquivo jQuery ao usuário, ele inclui cabeçalhos de cache — padrão de 1 ano.

Isso significa que, se um usuário visitar o site A — que usa o cdnjs para jQuery — e depois visitar o site B, que também usa o mesmo arquivo com a mesma versão, o navegador não precisará baixar o jQuery novamente, pois ele está em cache — o que resulta em carregamento mais rápido da página.

O ponto acima é a maior vantagem de usar algo como o cdnjs para suas bibliotecas externas.
No entanto, muito poucas bibliotecas são tão comuns quanto o jQuery, então realmente depende de quão comum é a biblioteca.

Ao carregar arquivos do cdnjs, você também precisará garantir que os adicione às configurações de CSP.

Então, acho que a resposta aqui é… depende.

Você está carregando a biblioteca como está?
Ela é comum?
Ela é do lado maior?

Se sim, talvez use um CDN. Se não, mantenha simples e apenas adicione-a em /vendor.