You can, but that could be to the detriment of less common configurations. That's a valid solution that strikes a different balance.
You may also wish to consider that Android apps can generate and execute code at runtime. It's perfectly valid to download or generate more Java bytecode after the app was installed. You would still need a compiler on the device to handle apps that do this efficiently.
I also left out some more specific information to prevent my reply from being even longer, but the binary code your device generates actually adapts to your specific usage as well as the general usage. The profile you get from Play is just a starting point. Shipped binary code isn't generally very flexible. If you like to use an app in a way that makes us runtime compile code that we thought wasn't important before, your device actually just adds this information to the profile and recompiles when the device isn't being used. That means you get a personal level of performance optimization depending on your personal usage.
It's not wrong to ship a slightly less optimal, fully compiled binary. I just don't think that would work as well. It would be a lot simpler though.