The Unix V7 ed(1) source code is a primitive 1,762-line C program with just a few comments, one of which is this highly-enlightening header comment:
/*
* Editor
*/
Given that the source code itself does not provide any rationale, you're only going to get it from the program's author.
ed was originally written by Ken Thompson in PDP-11 assembly, but you'd actually need to talk to whoever ported it to C. That might have been Dennis Ritchie, since he created C for Unix, and was one of many who used C to make Unix portable to non-PDP machines. Dr Ritchie is no longer around to answer such questions, though.
My reading of the code suggests that it was done to try and preserve the contents of the in-core copy of the edited document. You'll notice that other text editors also do not die on Ctrl-C.
Here's what ed does on Ctrl-C:
onintr()
{
signal(SIGINT, onintr);
putchr('\n');
lastc = '\n';
error(Q);
}
(Yes, K&R C. We don't need no steenkin' return type specifiers or parameter declarations.)
Translated into English, ed:
Re-registers the signal handler.
(Unix didn't get auto-resetting signals until 4.3BSD, in the mid-1980s.)
Writes out a new line, and remembers that it did so, via the global variable lastc.
(ed.c has about sixty global variables.)
Calls the error() function, which famously does little more than print ?, from the user's perspective.
In other words, it's saying, "You didn't really mean to do that, did you?"