Right now, when we download runtime packs for a project, we download all possible runtime packs for the target framework. This happens whether or not the project uses them or not, because at restore time we don't yet know if there will be a transitive reference to any given shared framework.
We may have to refine this for iOS and Android. See discussion here of the ASP.NET Core runtime pack getting downloaded for Android.
One way to resolve this is to simply say that ASP.NET Core isn't available on iOS and Android, and never download it. There may be scenarios where it is desired, however.
Another solution is to have a feature in NuGet where the project passes in a mapping of shared frameworks to runtime packs. During restore, if a project depends on a shared framework via a transitive reference, NuGet would convert that to a PackageDownload for the corresponding runtime pack via the mapping. This would also allow us to fix some of the issues with compiling projects that reference WindowsDesktop on non-Windows PCs.