У нас есть приложение, которое загружает более 50 сборок .NET в любой момент времени, и мы не используем GAC. Я думаю, что GAC наиболее полезен, если вам необходимо одновременно запустить несколько версий приложения, каждая из которых должна загрузить свою версию одной и той же общей библиотеки.
Даже тогда, если две версии приложений находятся в разных каталогах, тогда, пока вы держите их двоичные файлы раздельно, вам все равно не нужен GAC.
Я всегда чувствовал, что это гораздо полезнее для тех, кто создает SDK / API, где различные версии их SDK могут загружаться несколькими приложениями и жить в гармонии. Поэтому, если вы находитесь в этой лодке, тогда GAC может иметь смысл.
В некоторых случаях требуется GAC (я думаю, что компоненты .NET COM + должны быть в GAC в некоторых случаях), но я думаю, что это небольшой процент случаев.