Functionally there is no difference in them, they both do the same thing. They process the array in reverse order.
You could even do this:
arrStr.Reverse().ForEach(s => Console.WriteLine(s));
arrStr.Reverse().ToList().ForEach(s => Console.WriteLine(s));
and get the same effect again.
As far as performance goes, the bare for loop is probably going to be the fastest. Then you will have to benchmark to determine which is faster, the Linq expression or the stack.
I'm assuming that this is just a boiled down version of something you are doing that is much more complicated, in its current form if you just wanted to print a string array in reverse, I wouldn't be worried about which is faster than the other, its the Console.Writeline call that is slow. In this case, it would be quicker to use a StringBuilder and append a line, then at the end write out the string builder to the console.