The translation of this reads "they have to have books," but in a previous exercise in this lesson, I was marked wrong for translating "je dois vous dire" as "I have to talk to you." The correct answer was "I must talk to you." So I expected to see "they must have books" here. Nope!
I don't understand the difference. I'm okay with being wrong (happens a lot), but is a distinction at work that I don't see, or is this an inconsistency that perhaps needs reporting?
Not necessarily, because "devoir" has several meanings.
"They are supposed to have books" exactly back translates to "ils/elles sont censés avoir des livres".
With the verb "devoir", you would need a conditional mood for the same meaning: "ils/elles devraient avoir des livres".