There are a lot of reasons here which are correct, but one huge Factor when I was working with custom roms was the fact that the actual underlying hardware driver and firmware were a black box. Generally speaking you would need to harvest the binary files that made things like the camera, gps, and/or touchscreen work. Sometimes it wasnt too hard if you were going from one android skin to another that used the same underlining operating system, but if you wanted to make serious changes, and the phone manufacturer wasn’t great at sharing, it could take a very long time to figure out what data needed to be passed to the camera to make it turn on and be available to use. What got even worse is if you wanted to upgrade your android version (5 to 6 lets say), where android made serious changes under the hood, you ran the risk of having these blobs not even work with the system. They would expect something that android no longer passed or provided. Or they were using some deprecated API to make their function a accessable. It just became impossible to do without being able to recompile the binary only portions that weren’t subject to the gpl. As android has gotten more security conscious it has made things even more complicated.
Afaik what got them was providing fixes for an unreleased game behind a paywall. Hard to deny the piracy aspect when you are actively profiting off of it.