I am one of those guys who had a 4.0 GPA in college but I never used spaced repetition because what I was doing seemed to work well enough. Post-college I tried it for learning japanese and it seems like a downgrade from my usual approach.
The best way to learn something is by contextualizing it. For example it doesn't matter if you forget a math formula if you know how to re-derive it. If the formula is truly important, every time you access it, the entire DAG of knowledge leading up to that formula will be "refreshed". This is a very natural spaced repetition that erodes from the edge of your knowledge graph since the basic building blocks are refreshed so often. New knowledge is extremely easy to acquire, and your graph can be "refactored" every so often.
The space repetition apps I have use doesn't have a similar concept of interrelationship. For example it's possible for you to learn the flashcards for "three" and "one" but not know the word for "two". This is insane way of doing things. You are just refreshing random isolated nodes. Not only does it make it a lot harder to learn (since random out of order information is harder to compress), the knowledge graph you build is a tangled mess that's not as usable and doesn't degrade gracefully.