What surprises me more than the gain in amplitude for Euler (which is pretty easy to guess if you consider what happens to energy at different points) is the excellent prediction of the period. I'll have to give this a look.
I was able to do a version without the two extra columns that tracked pretty closely, using the parabolic formula for constant acceleration to calculate the next position, and the average acceleration assuming constant jerk (x''') to calculate the next velocity.
Code:
x[n+1] = x[n] + dt*(x'[n] + x''[n]*dt/2)
x''[n+1] = -x[n+1]
x'[n+1] = x'[n] + dt*(x''[n] + x''[n+1])/2