We do not break thinks for the sake of breaking them. We do it only when we think it is needed and we have no other choice to improve the software.
Also we always try to provide a migration path but also that legacy code will fail badly under the new design. This allow writers of external module (if they have some tests) to detect changes quickly.
Because it will make code more complex and so more buggy.
We follow a simple compatibility rule: same x.y version.
Also it is much more work. We support 5 series so if we have to test each client with only all the former supported series, this requires to test for 5 + 4 + 3 + 2 +1 = 15 combination of environments to test.
The client has a feature to check for bugfix release of the same series. So user can not worry about the link to use.
Also the link schema is pretty simple and stable as you just have to replace the series number by the one you want or just browse http://downloads.tryton.org/