I understand your confusion. Your logic is good. However there is a big problem with such questions - they lack context. In English, changing the tense changes the meaning as one would expect. It is therefore usually possible for more than one answer to be correct but have different meanings. In this case there could be contexts that make more than one answer possible. Here is an example:
Suppose there is a court case in progress concerning Monica's murder. Monica's husband is being asked about the events on a particular evening.
Monica's husband is on the witness stand.
Lawyer: Where did Monica eat on the evening in question?
Husband: Monica had dinner at home. She had dinner when she came home.
...
Later in the trial, the lawyer is summing up.
Lawyer: Members of the jury. We know the following from the testimony of Monica's husband: Monica had dinner at home. She had eaten dinner when she came/had come home. From this we can deduce that ...
So what is the difference? Monica's husband is informing the jury of events that happened in his (simple) past. However the lawyer, in the summing-up, is relating what the husband said. Thus the lawyer is talking about the past within the past. Note that other answers could be possible if we twist the context enough.
This is really subtle. I'm not sure I can explain it better. Perhaps putting the narrative into the simple present tense will help.
Monica has dinner at home. She has dinner when she comes home.
Now put all the verbs (has, has, and comes) into the simple past, producing "had, had, came":
Monica had dinner at home. She had dinner when she came home.
This is a really tough question to answer clearly. Let us see if someone else can do better.