Grammatical correctness of continuing sentences off dialogue tags
Solution 1:
A couple of points. First, the sentence needs to be read in the context of the story. Then, I think that Donald is correct I stating that Pullman's style in this story is deliberately archaic. More importantly, to my mind, is the way the sentence scans. Speak it aloud. Then substitute 'Said Malcolm' for 'Malcolm said'. It's lost the flow because the alliteration has virtually disappeared. The alliteration is on the letter 's'. In the original, the alliteration flows right through the phrase. If you reword it as 'Malcolm said'. the 'M' breaks the alliterative flow