I think the other answers are sufficient, but in order to avoid a long comment thread, I'll also make an answer out of the various options I proposed.
There are a few things we might praise about a given comparison, and some of them overlap.
Accurate
accurate, true: The analogy is true and correct; it doesn't give a false impression.
precise, exact: Every detail of the analogy corresponds to a detail in reality.
Fitting
apt, fitting: Not only does the analogy make sense, but it's also the right kind of thing to compare with the real situation. There may not be a better analogy to make, because the reality suggests the comparison so strongly.
well-chosen, well-suited, appropriate: The analogy is right for the particular context where it was made. The person making the analogy used sound judgement.
Informative
illuminating, enlightening, revealing: Because of the analogy, you learn something new. Without the analogy, you wouldn't have realized something about the reality.
useful, helpful, clear: The analogy explains something that was unclear or difficult to understand. It helps you move forward.
Vivid
vivid, striking: The analogy employs a surprising image that has a strong emotional effect.
surprising, colourful: The analogy is one you wouldn't have thought was appropriate. The person who made it is very imaginative.
Good
good, great: The analogy works. It makes sense and does the job it was supposed to do.
perfect: The analogy is exactly what you had in mind. It combines most or all of the other qualities. :)
In a conversational setting, I think the last group is the most common. So if B is simply praising A in a general way, he could say, "You're right, that's a perfect analogy!"
But if B wanted to praise a particular quality of the analogy, he could use a word from one of the other groups. And those don't all imply each other.
— Dear, your analogy about the bedroom was colourful, but it wasn't very well-chosen in polite company.
— Did you just say that houses are like medium-sized buildings that people live in? Well, that analogy is too precise... it isn't illuminating at all!
— My professor said that object-oriented programming is like having code that represents real-world objects, like cars and humans. That was a very helpful analogy when I was a beginner, but as I learned more, I realized it wasn't very accurate.