I will clarify my question first by giving you some examples of the usage I am specifically asking about:
The dish should be ready by now.
You must be exhausted, come in.
Most online teaching materials distinguish the usage between should and must by level of certainty. Using must implies greater certainty. However, it seems to me other factors also come into play. For example, the following sentence is a bit unnatural to me (please let me know if you think otherwise).
Tom isn't home yet. He should have been stuck in traffic.
It seems that when we use should, we are making guesses about a reasonable (often desirable) outcome if things've gone according to plan. Hence, I think it's okay to say:
Tom isn't home yet, but he should have been back 2 hours ago.
My conclusion is we don't use should when we are making guesses that an undesirable event has happened. In other cases, both can be used and imply different levels of certainty.
Ask Tom. He must know.
Ask Tom. He should know.
Could you tell me what you think? Thank you very much.