i think there are two different issues involved:
1) original releaser of a file does not want to be recognizable as the only complete source
to achieve this some emule mods have an option for only reporting single chunks to individual clients and thereby uploading a different chunk to each client. after each chunk has been uploaded 1-3 times, all chunks are revealed.
a byproduct of this feature is that the file is better spread b/c not everybody is downloading the first and last chunk from the releaser.
problems:
- it's much less obvious who the releaser is, but you could still figure this out if you used multiple clients and compared what chunks other clients reported to them
- it's pretty bad if somebody does not know better and turns on this feature for a regularly shared file (b/c chunk x+1 does not get uploaded before chunk x is uploaded, and if chunk x is well distributed but x+1 is not, this would cause big problems)
2) chunks that are rare should be given preference over more common chunks
i think this is actually a pretty good idea. oftentimes you have only very few complete sources and a number of sources that all have the same chunks. when you just started your download there is a good chance that you will download a common chunk from a complete source and not a chunk that you could not have gotten from another source. so in a sense you are wasting your upload slot with the complete source.
giving preference to rare chunks makes a lot of sense, but which chunk to upload should not be the uploaders call to make, b/c this does mess with the protocol and other functions as kry and gonosztopi have pointed out. instead, something like this should be implemented in the downloading client.
so the download priorities would be: first/last chunk (if "download first and last chunk first" is enabled) and then chunks should be downloaded based on how many (better: how few) other clients have the same chunk.
potential problem: this would put more strain on the cpu, which could be problematic for older machines, so it should be an optional feature