I can't comment on the specifics in this case (systemd, upower and MATE), however speaking generally a distinction should be made between updates to code and updates to interfaces. Updates to code can be for various reasons, e.g. to fix a security issue or to improve performance, and should have little to no impact on anything using that code (assuming a fixed interface). Updates to interfaces should be a lot more rare, as it is these that can break things, especially if not maintaining 'backward compatibility'. (Of course, updates to interfaces will also require updates to code).