Historically, all '168 & '328 AVR-based Arduino have interrupts on pins 2 and 3. Many sketches, shields and tutorials are all designed around using those pins with attachInterrupt(). Most commonly pin 2 is used, perhaps because it’s the first, perhaps because pin 3 has PWM. Mega was designed with interrupts on those pins, and of course Due supports interrupts on all pins. So basically, all boards have supported pin 2 as an interrupt.
Most likely during the lengthy Arduino.cc beta test for Zero, after Smart Projects had broken off and released their own board based on the early beta (and buggy code), Arduino.cc realized the only pin which can’t support interrupts had been assigned as pin 2. They did spend quite a long time on the beta test, and many criticized the product’s lateness. Arduino.org released their Zero Pro early, and later renamed to M0 & M0 Pro, but the code was terribly buggy early beta test code they’d copied while they still had access to Arduino.cc’s beta test site. It’s easy to take all this for granted now, but Arduino.org basically released the early beta with little or no improvements, while Arduino.cc indeed put a lot of work into testing and revising and releasing a well tested product with good code.
They almost certainly swapped those pins later in the beta test, for compatibility with shields and examples using pin 2 as an interrupt. But if you really want to believe Massimo Banzi personally rerouted those pins just to spite Federico Musto, then go right ahead. Conspiracy theories are fun!