Decompilando un po' il framework (con JustDecompile), ho controllato lo sviluppo della ricerca, e ho trovato queste cose (semplificando):
prima di tutto viene fatta una normalizzazione del search pattern:
private static string NormalizeSearchPattern(string searchPattern)
{
string str = searchPattern.TrimEnd(Path.TrimEndChars);
if (str.Equals("."))
{
str = "*";
}
Path.CheckSearchPattern(str);
return str;
}
poi viene ricavato un fullpath concatenando il path con il search pattern:
private static string GetFullSearchString(string fullPath, string searchPattern)
{
string str = Path.InternalCombine(fullPath, searchPattern);
char chr = str[str.Length - 1];
if (Path.IsDirectorySeparator(chr) || chr == Path.VolumeSeparatorChar)
{
str = string.Concat(str, '*');
}
return str;
}
infine viene passato tutto ad un API di windows:
(e al suo socio: FindNextFile)
che si può vedere nella prima init che viene fatta nel metodo CommonInit():
string str = Path.InternalCombine(this.searchData.fullPath, this.searchCriteria);
Win32Native.WIN32_FIND_DATA wIN32FINDDATum = new Win32Native.WIN32_FIND_DATA();
this._hnd = Win32Native.FindFirstFile(str, wIN32FINDDATum);
quindi se ad esempio chiamiamo la GetFiles così:
Directory.GetFiles(@"C:\Temp", @"*.txt")
negli internals dovrebbe essere convertito in una chiamata di sistema così:
Win32Native.FindFirstFile("C:\Temp\*.txt", wIN32FINDDATum);
dato questo ho provato a riprodurre il codice del framework chiamando direttamente le API, e i risultati sono consistenti, se cerco "*.txt" mi ritornano entrambi i file "pippo.txt" e "pippo.txtold", se cerco "*.txto" non mi ritorna niente, e se cerco "*.txtold" mi ritorna soltanto "pippo.txtold":
questo codice gira su LINQPad (http://www.linqpad.net/), se vuoi farlo girare in una console, togli i .Dump() e metti dei bei Console.WriteLine(...)
Conclusione: non saprei dirti se questo è un BUG o un comportamento voluto o quanto meno riconosciuto, ma ad ogni modo il framework non c'entra, se è un bug, hai trovato addirittura un bug nella api di windows 
In effetti provando sul windows explorer ottengo questo risultato discrepante dalle API:

726x205
10Kb

731x168
8Kb

725x167
8Kb
Quindi usano un altra api windows? oppure applicano una diversa normalizzazione sul search pattern (dato che è responsabilità del chiamante creare un path di ricerca corretto)? più facile sia la seconda che ho detto.
Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic