Sadly, Delphi can't optimize sequential access to an array (doesn't matter dynamic one or not), so pointer increment works faster in that case. But random/indirect access performance is equal.
Main benefit of dynamic arrays is safety. With pointer math you can easily violate array bounds. And this may emerge as a weird, difficult to catch bug.
With dynamic arrays there is range checking in debug builds which actually saves a lot of debugging time.
So pointer math is sensible only in time-critical parts of code and as an optimization over dynamic array-based code.

UPD:
waran, the line
Code:
wrkPointer := @a;
is incorrect. There should be:
Code:
wrkPointer := @a[0];
But performance will be the same of course.