Earlier quoted context omitted.
I'm pretty sure apps can have dependencies, so that looks like the best solution. Yes, users will be annoyed, but I think it's still better than various other "hacks".
QT has tried that on Android and it's an exceedingly poor solution. Almost no user will click to download additional files -- they've been (rightfully) conditioned to view this as a suspicious technique. As long as you blacklist unneeded libraries on Kivy, you can get the size down to 5 - 10 MB. I personally don't believe this download size is such a problem for users (many native Java apps are upwards of 5 MB). What…
For battery usage, i'd love to see data for this, i think drain will come from the amount of action you put in your interface, as well as background processing you'll do, kivy itself, being opengl and cautious about what to update when changes happen, shouldn't add a lot of overhead on this.
I don't think porting to micropython is considered an option, usually, when we want more efficient code, the solution is to do less python, more C, we have a nice integration with Cython, and don't hesitate to go with it as soon as needed.