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.]
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.