secondis a Dictionary<string, IList<PuntoMappa>>while の戻り値の型はUnionisIEnumerable<KeyValuePair<string, IList<PuntoMappa>>>です。それを辞書に戻す必要があります。
second = second.Union(first).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
コメントが指摘しているように、キーが重複している場合、これは機能しない可能性があります。代わりに、2 つの辞書で一致するキーを使用してリストを結合したい場合は、次を使用できますJoin。
second = first.Join(second, kvp => kvp.Key, kvp => kvp.Key, (pair1, pair2) => new { Name = pair1.Key, PuntoMappas = pair1.Value.Union(pair2.Value) })
.ToDictionary(p => p.Name, p => p.PuntoMappas.ToList());