This is my take: in a simple sentence like 'He has read books on many subjects',
on is the right choice. Each book is
on a subject, so the preposition is referring to a decision made by the
author of the book.
In a more complex sentence, either preposition would do:
He has read widely, and in a range of subjects. [The preposition refers to the
reader's choice.]
But
He has read books on a range of subjects.
But the two are quite similar, and it's a good question - on which I expect opinions will differ.
b