配列などの情報はクラスとして扱われます。そのため、イコール(a[i] = b[i])での処理は、コピーされた値ではなく、参照された値がコピーされます。
これはシャローコピーといって、参照している元の値に合わせて変化する値になります。上記の例でいえば、b[i]の値が変わると、それに合わせてa[i]の値も変化してしまいます。
今回実装したい処理の中には、シャローコピーしていたのでは実現できない処理がありました。それはキャラの情報と、直前の位置情報の2つです。
新しい情報が上書きされると同時に、参照元である値も変化してしまうため、こういった場合にはシャローコピーでは対処が出来ません。
そのため、ディープコピーという機能を利用します。こちらは、参照ではなくて、参照元の情報を構造を含めて完全にコピーをする方法です。
この方法ですと値は参照型ではなく、この値自体を変化させない限りは、新しい情報として保持することが出来ます。
つまり、b[i]の値が変化したとしても、ディープコピーして作成したa[i]はその値を参照することがなくなりますので、コピーしたときの情報を保持しています。
この配列のディープコピーの機能を利用して、キャラの情報や位置情報を保持することで、前にいたリーダーと同じ位置に次のリーダーも配置することが可能になっています。
ディープコピーについては、こちらの記事も参考にしてみてください。
侍エンジニア塾
【C#入門】配列をコピーする方法(一部の範囲指定、高速コピーも解説)
https://www.sejuku.net/blog/40212