This is largely due to the security model. On Android, each application runs in its own silo. This is completely different to a desktop OS, where all applications have full access to all the user's data.
If we have two applications, A and B, that both use a shared library. If they used the same copy, then potentially application A could break into application B's silo - which is not desired.
As paulkayuk comments, this is also to avoid DLL Hell - problems caused by applications expecting different versions of a shared library. These days storage is cheap - even on mobile - so avoiding DLL Hell is more important than saving a bit of storage space.