System test requires that the test subject be 'complete' or at least 'usable'. You are using a 'real' environment, which can be adversely affected if there are significant problems with the item to be tested. Thus 'at the end' is usually the most practical and most effective place for system testing.
Of course, there are times when some degree of overlap with earlier steps in the process is deemed necessary. In these cases, it is best if the test systems are isolated from anything else, so if they are 'damaged' by the subject of test, nobody else is affected. Furthermore, be prepared for 'duplication of work' as multiple phases end up being affected by the same problem, and more 'retesting' of the problem areas. The better the approved agreement between the various parties, the less contention there is likely to be when things 'bog down'.
Note that System Test is not really the 'very last step'. There is generally some form of 'customer acceptance' or 'usability' test. This often is done by customers (early ship program or beta test) before general availability, or formally or informally after GA. In this case where no such testing will be done pre-GA, the smart system tester will include some of this testing in their system test.
Thanks,
John