List<T> は AsReadOnly メソッドが提供されているんだけど Dictionary<TKey, TValue> にはないんですよね。
そういえば周りでは IList<T> ってあまり使われていないんですよね。 (AsReadOnly メソッドは IList<T> を実装した ReadOnlyCollection<T> を返却するため、自分は IList<T> を返すようにしています)
内部ロジックで完結する場合は List で問題ないと思うのですが、 外部に公開する場合は、今回の読み取り専用な場合含め、 意味づけがない限り IList や IDictionary のインターフェースのほうがいいよなあ。