This is, perhaps, one of the earliest surviving derivations of the law of explosion, known by the Latin name ex falso sequitur quodlibet, contradiction implies anything. It seems very counterintuitive, but it is hard to pinpoint where things go wrong.
"Conditional exchange" is the definition of the material conditional, which is controversial. Indeed, it means that "2 is not odd or 2 is even" becomes "if 2 is odd then 2 is even", and P → E can be true even if P and E have nothing to do with each other ("if the Moon is made of Swiss cheese then 2 is odd"). Material conditional was introduced by Philo the Dialectician after Aristotle's death, and contrary to his teacher, Diodorus Cronus, who considered the conditionals valid only when their conclusion is true. Philo was a fried of Zeno, the founder of Stoicism, and ex falso sequitur quodlibet was already known to Stoics, see Anellis's review, although we do not know how they derived it formally.
However, one can replace the use of material conditional with disjunctive syllogism, a.k.a. modus tollendo ponens (MTP), in the second part of the proof. By MTP, ~P v E and P give E directly. Indeed, if one or the other thing is true, and one of them isn't, then the other better be. This is harder to pick an issue with, but the school of Cologne in the 15th century rejected exactly William's use of MTP.
What else might be the problem, if any? Well, the "Disjunctive Addition" from ~P to ~P v E, also called disjunction introduction or weakening, despite its seeming innocence, does something similar to the material conditional: it allows to introduce potentially irrelevant statements into the argument. Again, P and E may have nothing to do with each other.
The moral is that if we want to avoid the law of explosion we have to reject either the disjunctive syllogism, or the disjunction introduction/weakening, both of which seem far less objectionable. It is a nice illustration of the difficulties facing the creators of paraconsistent logics.
Nonetheless, indications are that Aristotle himself (as well as Stoic master logician Chrysippus) favored just such a logic, relevance logic. In particular, in his conditionals premises were supposed to be relevant to the conclusions (he was closer to Diodorus than to Philo), and he rejected the fourth figure of the syllogism because it weakens "all" to "some" in the conclusion, see What were the historical interpretations of Aristotle's definition of validity/logical consequence? Steinkrüger in Aristotle’s Assertoric Syllogistic and Modern Relevance Logic argues as much:
"This notion is characterized by two conditions imposed on the concept of validity: first, that some meaning content is shared between the premises and the conclusion, and second, that the premises of a proof are actually used to derive the conclusion. Turning to Aristotle’s Prior Analytics, I argue that there is evidence that Aristotle’s Assertoric Syllogistic satisfies both conditions. Moreover, Aristotle at one point explicitly addresses the potential harmfulness of syllogisms with unused premises."
And he concludes, "we can, cautiously, uphold the result that Aristotle’s logic is a relevance logic". If so, Aristotle would have frowned upon both the weakening and the use of the material conditional in William's proof. Since medieval logicians largely followed Aristotle, it is not surprising that it was controversial and not universally accepted.