Probabilmente 
 Ci sono diversi casi d'uso e diverse scuole di pensiero nella programmazione. 
 Tuttavia, dalla mia esperienza,  non mi sono mai pentito di aver inserito una raccolta di cose nella sua classe . Ti consente di limitare l'accesso nel modo in cui la raccolta è destinata a essere utilizzata, inoltre puoi  nominare  quei "punti di accesso" (= metodi, proprietà ecc.). 
 Perché non solo LINQ 
 Certo, con LINQ puoi facilmente filtrare, ordinare, rimuovere tutti gli elementi che hanno la condizione x ecc., ma se crei una classe contenente la raccolta (   private    -ly), puoi limitare la classe a fare solo una certo modo. Ad esempio, puoi fornire un metodo standard di filtraggio. Questo è fondamentalmente  il concetto OOP di incapsulamento . 
  Encapsulation is an object-oriented programming concept that binds together the data and functions that manipulate the data, and that keeps both safe from outside interference and misuse.
 A proposito, non sto sostenendo contro LINQ, perché è sorprendente. Le query LINQ tendono a finire in un metodo sulle mie "classi di raccolta" e assomigliano molto a  cosa consiglia Martin Fowler in questo Per quanto riguarda . È un lungo articolo, ma il primo esempio è sufficiente per dimostrare cosa intendo: 
static public IEnumerable<String> TwitterHandles(IEnumerable<Author> authors, string company) {
return authors
  .Where(a => a.Company == company)
  .Select(a => a.TwitterHandle)
  .Where (h => h != null);
}
 Consigli: incapsula le raccolte 
 Essenzialmente, una propria classe   ArgumentList    può fornire funzionalità aggiuntive, mentre non ci vuole nulla. Qualunque cosa tu intenda usare, puoi esporre - qualunque cosa tu non intenda usare  non puoi  essere usata. 
 Questo significa anche che ora devi preoccuparti solo della  interfaccia  di   ArgumentList    e non della sua  implementazione . Ho avuto la mia giusta dose di casi in cui una tale "classe di raccolta" ha reso evidente che in realtà non ho  bisogno  di un   Dictionary<>    e un   List<>    è stato sufficiente. Inoltre, è stato anche facile cambiarlo in   List<>    perché avevo solo bisogno di cambiare la classe di raccolta stessa - basta sostituire la raccolta e regolare il codice nei metodi in modo che facciano comunque quello che dicono. 
 Ora come riassunto di tutto ciò,   IDictionary<string, ArgumentList>    è migliore del tuo esempio dato, ma in un certo senso  è solo un sintomo di qualcosa di più grande . 
 PS 
 Detto questo, ho una parte nella mia attuale base di codice che usa collezioni simili al tuo esempio. Perché è "solo spostando alcuni dati finché non si adatta". Comunque, in ogni altro posto in cui ho usato una "collection class", il codice è molto più facile da capire e sto considerando di cambiare anche questa parte. Sai,  quando ho il tempo : D 
 Inoltre, nel caso si utilizzino contenitori IoC, le "classi di raccolta" sono più facili da usare rispetto alle raccolte bare-bone. 
 Ti suggerisco di leggere  la domanda e la risposta accettata qui . Non è un duplicato o una domanda simile, ma la risposta accettata ha una certa sovrapposizione di informazioni. È una spiegazione molto bella di come le collezioni siano pensate per essere utilizzate in C #, da uno dei creatori di C # non meno - è stato sicuramente un po 'un momento per me.