The most compelling reason for the discrepancy that I can find (since I absolutely refuse to accept any claim that Americans are 'inherently' less mathematically able than others) is the difference in the way Math is taught at the school level. (Disclaimer: I only have India as a basis for comparison, so perhaps this isn't reasonable either.) An Indian student who enters engineering college has already studied (differential and integral) calculus for two years, probability and statistics for at least as long, some form of co-ordinate geometry (with its emphasis on proofs) and algebra for over five years, besides some combinatorics, matrix algebra, and complex analysis. Some high school syllabi even include a fair bit of group theory! Graders in India also tend to be demanding (bordering on ruthless!) when evaluating exams, so students quickly learn when an answer is sufficiently precise to deserve full credit.
So is that a better system? I'm not sure; many Indian students never see a complex number after leaving high school and years of demanding Math often leave them hating the subject. I know several Indians who feel uncomfortable answering an exam question unless they're reasonably sure how to do it; a lack of partial credit (much less common in India than in America) discourages people from risk-taking. And I've noticed that American students are often more creative with solutions to both exam problems and random problems discussed in section, which makes teaching fun. It looks like they make up most of the relative deficiency in college, so doing less math in school doesn't seem like much of a loss. Perhaps the syllabi will change to embrace the best of both systems.
Right now, though, I often wish that there were more emphasis on rigorously correct solutions. Some of the best students seem to think that proof by example is completely reasonable! And it always makes me feel like I've done a terrible job in section when I have to grade papers which make warm, fuzzy statements like:
Trees are a Good Thing (tm) in general when compared to lists (except when they (the trees) are unbalanced, but that doesn't happen for Red-Black Trees (because they are always balanced), so it doesn't make a difference to this answer) and so searching in a tree is usually better than in a list (because we don't have to look at all the tree nodes), so we would rather use a tree.
(Admit it, that's an exaggeration! -ed.) Granted, but I yearn for a plain O(log n)!