I always have to stop and think about which of these is the best word to use in a particular context. While the respective meanings of these words do overlap somewhat, there is, I think, still an important distinction to recognize.
The meaning of "assume" can best be kept in mind with the phrase, "assuming for the sake of argument." We make an assumption, and proceed from there with what flows from that assumption. When studying the proof of math theorems years ago I would often encounter the phrase, "It is intuitively obvious that" such-and-such is true. What the writer is saying here is that he is not going to be bothered with proving something that seems evident, but rather he is going to assume it is true and then go on from there. The rest of the proof depends on the truth of that assumption.
"Presume" is a little harder to nail down. One thinks of the "presumption of innocence" in a criminal trial. This doesn't mean we think the defendant is actually innocent, but it means we presume he is until it is shown otherwise. My hunch is that people don't use "presume" as often as they should, and the reasons are understandable. It sounds a bit pretentious, and the related adjective, "presumptuous", has quite a negative connotation attached to it.
The inimitable Bill Bryson comments: "Assume, in the sense of 'to suppose', normally means to put forth a realistic hypothesis, something that can be taken as probable...Presume has more of an air of sticking one's neck out, of making an assertion that may be arguable or wrong."
The meta-pragmatics of Twitter
2 minutes ago