100 ほどのファイル名でメモリが圧迫されるようなシステムであれば、ハードの増強が必須でしょう。この程度のメモリの使用は問題にならないと思います。
しかし、もっと大規模な使用を視野に入れて、無駄なメモリを確保したくないというのであれば、GetFiles の代わりに EnumerateFiles を使ってください。こちらは配列を返すのではなく、列挙子を返します。
例えば次のような使い方をすることによって、foreach ループが一回回るたびに該当ファイルが一つ列挙されます。
これを遅延評価といいます。
[雑記] LINQ と遅延評価
C#
1using System;
2using System.Linq;
3using System.Text.RegularExpressions;
4
5namespace ConsoleApp1
6{
7 class Program
8 {
9 static void Main(string[] args)
10 {
11 var regex = new Regex(@"_(\d{4})(\d{2})(\d{2}).log$");
12 var threshould = DateTime.Today.AddDays(-90);
13 bool ShouldDelete(string path)
14 {
15 var match = regex.Match(path);
16 if (!match.Success) return false;
17 var dateOfLogFile = new DateTime(
18 int.Parse(match.Groups[1].Value),
19 int.Parse(match.Groups[2].Value),
20 int.Parse(match.Groups[3].Value));
21 return dateOfLogFile < threshould;
22 }
23 var files = System.IO.Directory
24 .EnumerateFiles("path", "*", System.IO.SearchOption.AllDirectories)
25 .Where(ShouldDelete);
26 foreach (var file in files)
27 {
28 System.IO.File.Delete(file);
29 }
30 }
31 }
32}