Earlier quoted context omitted.
I find the former much more self-explanatory than the latter but, for instance, can't ForEach-Object be written as for?
I'm still a PowerShell novice, but I believe ForEach-Object and ForEach are subtly different, and PowerShell has classic For(Init; Condition; Increment) loops also but it's even more different than those two.
Get-Help ForEach-Object
...
ALIASES foreach %