- Adding a CA to the trust store to MITM yourself <-- or to work around Let's Encrypt's old certificate root expiring by manually adding the new one
- GravityBox for various UI tweaks and making volume control a little more fine-grained
- UMS Enabler to expose your external SD card as an USB drive (accessing it via MTP isn't really fun and doesn't work everywhere [1])
- proper local backups and therefore the ability to e.g. relatively painlessly revert borked app updates
- sometimes due to bugs cruft accumulates in data directories that as a regular user can only be cleaned by – depending on the nature of the bug – clearing the whole application data [2] (which is already annoying enough as it of course also means wiping all your settings and other stuff you might actually want to keep), completely uninstalling and reinstalling the app [3], or even wiping the whole phone [4].
[1] E.g. the local state library has a nice book scanner available for public use. You can either e-mail yourself the results (but that only works reliably up to a certain file size), or else save them on an USB drive. I didn't have an USB drive with me, but thanks to UMS Enable I could just plug in my phone, switch my external SD card to USB mode and voila.
[2] It seems that e.g. possibly as a result of /etc/hosts blocking via AdAway some apps accumulate telemetry data that they cannot send (Fabric / Crashlytics seems to be the particular culprit here) and after a few weeks that amount of data can reach a notable size.
Another example was that due to some sort of bug Google's TTS app (Speech Services) kept accumulating TTS voice packs after updates and wouldn't delete the old versions, and by the time I noticed they were occupying a few hundred MB.
[3] Don't know of a current example, but during the days of Android 4.1.2, Android had a bug whereby if a native library was removed from a future APK version (respectively renamed), then Android wouldn't remove the old copy of the library when installing an update. Skype was a particular culprit there, because their native library was around 25 MB and included a version number in its filename, so each time that library was upgraded an additional 25 MB file was plonked onto the file system, with the old file remaining behind. Without root, the only way to remove those superfluous files was by completely uninstalling the app.
[4] I occasionally find system RAM dumps appearing under /data/ss-ram-dumps. I've got no idea whether they eventually get cleaned up automatically, or if they would just accumulate and take up more and more space until you're forced to wipe the whole phone.