Dictionary<string, string> is a more modern approach. It implements IEnumerable<T> and it’s more suited for LINQy stuff.
StringDictionary is the old school way. It was there before generics days. I would use it only when interfacing with legacy code.