This is 100% the carrier's fault. They insist on either bleeding of profit from OEM per each OTA, or refuse to do it. Apple was the smart one by basically refusing to bend the knee to the carriers. Google, for many historical reasons opted to deal with the carries via proxy with the likes of Samsung, and the various OEM's.