Вы не «замораживаете» arrCopy при добавлении, поэтому каждый раз, когда вы добавляете список по имени, он меняется по мере изменения результата.
Попробуйте импортировать модуль копирования и использовать глубокую копию, как я это сделал.
import copy
def insertionSort1(n, arr):
arrCopy = copy.deepcopy(arr[:])
last = arr[-1]
result = []
for ind, num in enumerate(reversed(arr[:-1])):
print('ind',ind, 'num',num, 'arrCopy', arrCopy, 'result',result)
if num>=last:
arrCopy[len(arr)-1-ind]=num
result.append(copy.deepcopy(arrCopy))
else:
arrCopy[len(arr)-1-ind]=last
result.append(copy.deepcopy(arrCopy))
break
print(result)
for nums in result:
print(' '.join(str(n) for n in nums))
def main():
insertionSort1(5, [2, 4, 6, 8, 3])
if __name__ == '__main__':
main()