1) photos permission includes access to full file for each photo, including geotagged metadata and any audio from "live photo"
This seems desirable and working as expected. You might legitimately want to share the live photo, or the photo with metadata. However, it would be nice if the photo picker asked you whether you wanted to share with metadata. (Note: unlike the photo picker in native apps, the Safari file picker, ie the HTML5 <input type="file" />, does strip EXIF data by default.)
2) it's easy to take a live photo without realizing it, and similarly easy to share it
This could be improved when selecting photos within the photo picker. There should be an option to separately select the static or full file (maybe with a long press).
2) granting access to "all photos" doesn't alert you when an app accesses a photo without you selecting it for some reason
This used to be much worse, when the default and only option was to grant access to all photos, or no photos. Ever since Apple added the option to select which photos an app can access, I think this is less of a problem. But there is an education issue; people don't realize that "all" means the app can truly read all your photos, including geotagged metadata and audio of live photos, even without you selecting one to "upload" (or "do something with," depending on the purpose of the app). Even as a relative expert, I never understood this until I saw a demo app (to prove the privacy issue) that looped through all your photos and displayed your geotagged locations.
But even if people did realize this, there is no indication that an app has accessed a photo, like there is with the icon indicating the microphone or camera was used recently. Perhaps a solution to this could be changing the photo picker to overlay a green dot on any photo the app has accessed.