Well, one way to think about the second call is to go back in time before lambdas existed. The ForEach<T>() method accepts an Action<T> delegate (whose signature is to accept a single parameter and not return a value).
When I look at the original method call (second call in the original post), I read it as: SmartFiles is an IList containing elements of type FileSortCell. I want to perform some action on every item in the list, so I am going to utilize ExtractInfoFromFilePayload method whose signature matches that of an Action<T> delegate (hence, the call to ForEach inline).
In a way, you can think about the first method call as being archaic and redundant... it is valid because lambdas and LINQ made it valid later on, not because it was meant to be primary functionality. I guess this last point may come across as being confusing... someone else may be able to explain it better.