It is written as if, for a given document (in a buffer), there could be more than a name type (but name-types is derived from the file's extension), and more than one content type (but content-types is derived from looking at the few first bytes at the beginning of the buffer). And then there's a function doc-view-intersection whose only use is to detect cases of the name-types in the content-types' "list".
I mean, I could see the logic if it the code tried to detect cases of one extension (let's say, ".doc") that could represent different content-types. But in fact, currently the situation is the opposite: multiple extensions associated to one content-type (like .ps / .eps, etc.)
Seems to me generality for generality's sake, as the code has only had minor alteration (adding djvu and some assoc changes) in nine years.