It's quite hard to explain this without a long lecture on how circuit simulation works (as I usually give when teaching details about using Spectre efficiently and effectively), but essentially what happens is that at each timestep the simulator is solving the non-linear differential circuit equations numerically (using Newton-Raphson iterative methods). This solves the equations to a certain level of accuracy (controlled with various parameters, primarily reltol/vabstol/iabstol). So the result at any one point has some error.
Once it has a result for a timestep, the simulator will decide where it thinks it should take the next timestep. Assuming that it's decided a particular place (more later), it will construct a predictor curve based on previous timesteps - this is generally an adaptive quadratic equation - it depends a bit on the integration method, and whether there are breakpoints (discontinuities in slope, for example, such as you get with a pulse source), but in general it's a quadratic. It then solves the next timestep using the same iterative approaches starting from this predictor, and then compares the converged result against the predictor. if the difference is too high, it will reject the timestep and take a shorter one - this remaining error is called the "local truncation error".
The simulator uses the trend of the local truncation error to preemptively adjust the timesteps - it will relax the timesteps if the error is reducing, and tighten them if the error is increasing - the goal is to take as few timesteps as possible, but still follow the waveform accurately.
So at each timestep there are a few sources of error. With a driven circuit, these errors do not normally accumulate, as the driving signals correct for any errors made. With a fully autonomous circuit, the errors tend to persist - resulting in (effectively) numerical phase noise (in an oscillator).
In this case the circuit is driven, but has a resonance too - and the driving signal is dominating the response - and because of the high Q, the errors that are being made don't get corrected for. It probably would also get better if the tolerances were tightened, but by forcing a shorter timestep it has meant that the local truncation error is reduced and so it is better able to follow the very small changes from iteration to iteration which result in the amplitude of Vout decreasing.
You say that "there are enough points among each Vout period" - I don't know why you think that. Just because it looks smooth doesn't mean that a very small numerical error over a long time constant doesn't lead to inaccurate behaviour in such an ideal circuit with such high Q. Very high Q circuits, and in fact ideal circuits, are not that easy to simulate in time domain circuit simulators (not just spectre, but any simulator) because they really aren't optimized for that task. They are intended to simulate real world circuits in a reasonable time (but even then, oscillators can be tricky).
Does that help?