It is an allowable simplification to omit the full stop in (b) and (c), but I should regard this as optional, and depending on the bloody-mindedness of my mood I could well insist on keeping them.

I agree with your general premise about the logical connotation of punctuation, Nicholas, but I cannot agree with this example. I would lean further towards saying we should always omit a stop whenever a double stop is separated only by speech marks – and the logic is that the speaker being quoted did not actually say the punctuation being offered. So my version of (b) would always be:

(b) When did Mary say "Look at that spider there"?

It seems to me that the role of the question mark in the next example is slightly different, because again though not actually spoken by the person quoted, it is indicative of a part of her speech – the stress and inflexion of a question. Thus that does have to be preserved within the speech marks, but we do not need an additional stop to the sentence:

(c) It was Mary who asked "Why is that spider there?"

FWIW, I agree with you about the ugly redundancy of the comma before the quote, but noting Faldage’s and Helen’s views, perhaps this falls under that broad head of style that is personal preference only.

If our sentence continues after the quote, I would have a choice of adding punctuation, such as

(c2) It was Mary who asked "Why is that spider there?" - but it was John who screamed!

I note however that my bloody MS programs always try and ‘correct’ me if I substitute a simple comma or semi-colon in the same position as the dash. This brings me to another value of punctuation: it is surely not only functional for reasons of logic, but also for reasons of indicating rhythm and other sonorous values. I am inclined to believe that this is why printers have battened onto that strange comma, recognising that there is likely to be a mild caesura in the pattern of speech to preface a quote. Then it gets visually ingrained in the way Faldage notes.