For what queries is conditional tags informative?

is_category(‘apple’) might give a false response if “banana” AND “apple” has been queried

you’re using is_category incorrectly in this context. From Codex:

is_category();
// When any Category archive page is being displayed.

A category archive page is for a single term, if a query is a for more than one term, it’s not a term archive page. so it’s not a matter of “giving complete information” it’s a matter of understanding what each tag actually indicates.