I think Tiercelet's answer is first-rate, and I don't think I can explain the difference any more clearly. But you wanted an explanation for why, so here's my attempt. Be warned that I'm not enough of a scholar to write about this authoritatively. This is just an explanation that seems plausible to one native speaker, invented while writing it.
Should is to shall as would is to will and could is to can. But shall has largely faded out of common use while should has remained. Contemporary should and would are echoes of older usage, stretching the older meanings to fill gaps as needed. And the older usage is strange and confusing in a very English way.
It used to be, especially in British English, that shall was simply the modal verb for future tense when used in the first person, but meant intention in the second and third persons where the person having the intention is someone other than the subject of the sentence (usually the speaker). Will expressed the speaker's intention in the first person and future tense in the second and third persons. Here are a few examples (you can find more in a good dictionary). "I'm running late—I shall miss my train!" "If I don't leave immediately, I should miss my train." "Glasgow can wait. I will miss the train." "I would sooner miss my train than leave without saying a proper goodbye." In the second person: "You shall miss your train and stay here awhile" (meaning that the speaker insists that you miss the train). "You shall have no other gods before me" (plural to address the community) and "Thou shalt not steal" (singular to address each person individually). "You will not steal my hens because I've locked them up where you can't get to them." Third person: "If Jones has committed murder, then he should hang" (certainly not Jones's intention) but, assessing the likely outcome of the legal system, "If Jones were caught, then he would surely hang."
That's so confusing, I don't think people ever followed it consistently. I think what's happened is that shall and should have taken full ownership of "intention other than that of the subject" while will and would have mostly taken ownership of "just saying the facts about the future or hypothetical world" but will and would still retain a strong grip on "the subject's intention".
Both -ould words claim the conditional mood, but would has the stronger claim. This frees should to sometimes introduce a hypothesis rather than a consequence, or to work as a "softener" where would is inappropriate for some reason (see below). Neither -ll word has a strong claim on the present tense. Should seems to have given up its claim to the past tense; would owns that. Overall, the words conflict sometimes and sometimes one stretches to fill in where the other is especially out of place.
"Intention other than that of the subject of the sentence" has broadened to include things like law, official rules, clauses in a contract, engineering specifications, etc., as well as—most importantly here—ideas about the proper state or flow of things, independent of people's desires. "The way things should be" means something like "The way God intended". When someone says "People should be paid a living wage", this comes across as meaning not the intention or hope of the speaker, but a claim about how an economy is properly and ethically organized. Since shall has faded, should fills in for the present tense. "People shall be paid a living wage" is wording suitable only for a legal statute or a political manifesto.
Maybe now the bizarre collection of should and would usages starts to make a little sense:
"That would be Steve at the door." (Third person, just expressing expectation. Maybe the speaker is hoping that Steve is arriving, and maybe the speaker wishes that Steve not arrive. The would phrasing doesn't suggest either one.)
"That should be Steve at the door." (Third person, expressing the expectation that Steve is arriving as planned.)
"If you should miss your train, you can stay here overnight." (There is an intention to catch the train, attracting should. Even though missing your train is the plan going awry, which opposes should, the conditional mood of -ould attracts should as a way to soften the impact of "miss your train". Would is out of place because its connection with the subject's intention makes it sound like "you" might miss your train intentionally—or "willingly".)
"If you would miss this train, you'll have no one to blame but yourself." (Describing "your" failure to intend strongly enough or plan carefully enough to be sure you catch the train.)
"I would like an ice-cream sundae. Jerome would also like an ice-cream sundae. Would you like one, too?" (Expressing the subject's intention, in first, second, and third person.)
"I should like ice-cream sundaes, since my parents ran an ice-cream shop, but I don't." (Expressing a proper, reasonable state of things, which contradicts the speaker's actual tastes.)
"You should like ice-cream sundaes! They're so good!" (Expressing "the way things should be", which contradicts "your" actual tastes.)
"Why should a cookbook cost less than a meal?" (Expressing outrage at the irrationality of a world where a book that tells how to make a hundred different kinds of meal, as many times as you like, costs less than one cooked meal. The word should indicates that the world has violated the speaker's expectations. Or it could just mean "Why is it proper that prices work this way?")
"Why would a cookbook cost less than a meal?" (Expressing curiosity about the same state of affairs. The word would indicates that the world has violated the speaker's expectations, but this time, the speaker wants to understand, not protest. If you just said "Why does a cookbook cost less than a meal?", then the sentence doesn't mean that an expectation was violated.)
Now here are your hard examples:
"I posted the letter ages ago. They would have it by now." (There are two pressures favoring should here. First, you're starting from the real situation, not a counterfactual one. "If I had posted the letter two weeks ago, they would have gotten it by now" sounds normal because would mostly owns "consequence of a stated counterfactual". The second pressure is that the normal and proper way that the post office "should" function necessitates that your recipient have the letter by now. If they haven't received it, something is terribly wrong. So, this situation is not very compatible with would and very compatible with should.)
"If I posted the letter two weeks ago, they should have it by now." (If you say it this way, you're pouting because things aren't going right. The should makes the if mean that, contrary to the hypothetical phrasing, you actually did post the letter two weeks ago. If you say should where would is normal, it's because you're trying to emphasize the proper way of things that you're imagining, or how the real world has failed to live up to that. The meanings of other words will distort to accommodate this.)
"The journey normally takes four hours, so we would get there about 6:00." (This is a little odd and you wouldn't normally say it. Similarly to two examples ago, since there's no subject having an intention and no counterfactual to be a consequence of, and since the clause describes the successful outcome of a plan or intention that the journey doesn't have, would is in should's natural territory. If you say would here, you're casting doubt on whether the journey really will take four hours. Since would wants to introduce the consequence of a counterfactual, it increases the level of doubt in the word "normally" so "The journey normally takes four hours" takes on the meaning "If the journey were to take the normal four hours—a doubtful proposition, but let's examine it—" In speech you would reinforce this with appropriate intonation, such as stressing and lengthening the word "normally".)
"We're nearly at the front of the queue. We wouldn't have to wait much longer." Same as above.
"There are no reports of delays. The train would be on time." (This is odd but sayable. It's a very soft way of stating that you have inferred that the train is on time right now. Should is normal here because it's proper that without reports of delays, the train will be on time. If the train is late without reports of delays, clearly somebody isn't doing their job. You can also say will be here. It's stronger than should be. Will be would either express your confidence that everyone is doing their jobs properly, or your insistence that the train must be on time or you're going to be angry.)
"There are reports of delays. The train should be late." (You can't say should here because delays are abnormal: things are not going in the proper way. The expected result is that the train will be late, so you have to say will be, except for the oddity in the next example.)
"There are reports of delays. The train would be late." (This is odd but sayable, like "The train would be on time" above. Normally you would say will be, because there's no counterfactual hypothesis to lead to a consequence that would be introduces. Considerations as in the above examples apply: would be can throw doubt on the reports of delays or their usual implications. Perhaps the train will run faster than normal in order to make up for the delays. Also, as Tiercelet noted, there is a special intonation of would be here that gives it yet another meaning.)
So there it is: no solid rules, just three (sometimes four) words covering more than four meanings, conflicting over the conditional mood, and people finding ways to exploit all this to communicate a variety of distinctions in different situations.