Hi Oleg,
I think part of the reason is that when using Spectra to compute SVD of X, we are actually calculating the eigenvalues of X'X or XX'. However, this doubles the condition number of X, and hence the numerical precision and stability is reduced.
There are algorithms that can compute SVD without touching X'X, and I agree that these methods may be more appropriate for SVD problems. Bryan Lewis once wrote an article comparing the R pakcages "RSpectra" and "irlba", which also discussed the algorithm issues.
https://bwlewis.github.io/irlba/comparison.html