One of my best friends who is very intelligent and successful came from a working class family that didn't emphasize sound personal finance education to say the least.
He kept his savings in HS in his "sock in a drawer" account.
I came from an upper middle class family that was the opposite. I was given a share or two of stocks for birthday gifts sometimes (often at my request instead of toys) when I was young to educate me on their value and was taught from a very young age to invest, save in a bank, build credit, and live below my means.
While my friend is doing well financially, you can perhaps guess at how much of his money is invested vs mine.
This story plays out in numerous other ways that also can lead to compounding effects with things like education, health, criminal activity, etc.
These things are picked up on by children from all parts of the family. If your family generally has their act together, knows how to be smart with money, etc. there's probably a good chance of that rubbing off on kids which sets them down a certain path in life that might be very different otherwise.
Suppose your grandparents genetic "quality" is statistically independent, so you have four quantities g1, g2, g3, g4. Your parents quality is approximately (g1 + g2) / 2 and (g3 + g4) / 2 and yours is (g1 + g2 + g3 + g4) / 4.
Now if we assume that income is a noisy measure of your "g" then it will follow that your income is correlated with your grandparents' even after accounting for your parents' income.
The problem is that there is too little variation inside families and too much among families.
Let's say that there are exactly two alleles: successful and not successful. So, successful people pairs with successful people and have successful offspring, as you propose. But then, there should be little variability among successful unrelated families, and that is just not so.
Let's say that there are many different alleles that combine in lots of ways: then, there should be lots of variability inside families.
This does not follow from your first statement. It's not a logical conclusion. For your reduction to a binary set of alleles it does, but it does not come close to being an analogy for real life.
Think about it in terms of coin flips. One coin flip is random: you get heads or tails with 50% probability. A small number of coin flips can lead to large swings. However, many coin flips reliably produces a Gaussian, with only small statistical fluctuations.
Now imagine that you decree that for the first ten coin flips, if the result comes up tails you'll ignore it. With many flips, you will still get a (somewhat smaller) Gaussian, but with the mean # of heads shifted over by 5.
This is what natural selection & assortative mating does: it doesn't prevent the millions of coin flips from happening, but it eliminates some number of "known bad" outcomes, which will shift the mean over by some amount even as variability remains roughly constant.