I don't know if it's strictly desirable to have the swarm cooperatively assign who stores which chunks, because that provides an avenue for bad actors to attack that assignment (e.g. by e.g. claiming to have a block to drive peers away, but never actually serving it).
It would be possible to have the swarm behave cooperatively based on heuristics, though. Your client gets a copy of what peers have what chunks, so it has enough information to make its own decision on what chunks need to be mirrored the most. A sufficiently clever algorithm would get pretty close to a centralized cooperation server.
Iirc, some extant torrent clients have similar features where they download the "hot" chunks first (the chunks with the most leechers, for private tracker ratios). I suspect the only reason an "archive/sparse" variant of that where it only downloads poorly mirroed chunks doesn't exist is because it's useless for the normal "download a file" use case. Sparse chunks of a file are basically useless outside of archival.