По мне так это простейший алгоритм, так как строки ни сортированы, и никак не связаны. В сортированных/связанных масивах все по другому думаю, там уже в зависимости от структуры метод переопределен скорее всего.
Ну вы хотя бы Рихтера почитали, у него же все это описано.
Если вкратце, то «обычный» StringComparison делает сравнение с учетом всех лингвистических особенностей, а StringComparison.Ordinal — это тупое сравнение по коду символа. Неудивительно, что второе быстрее в разы.