So glad to hear you found a way to detect the blinks!
Your question... it partly depends on what you are most comfortable writing in. The Arduino is certainly capable of doing it, but then, so is C#, C++, VB.Net, etc. I can't speak for Magunolink, as I have not used it, but at first glance it may well do the job.
Of course there's nothing stopping you from doing part of the job one place, and the rest elsewhere. I look at it this way. The GUI itself has to be on the PC, and the blink detection has to be on the Arduino, so the real question is "Where is the demarcation?".
Do you only send in detected blinks, and do all the processing on the PC, or do you do some of the processing (say timing between blinks to signify pauses or no pauses), or do you do the entire selection in the Arduino and send the data in as characters? A lot of the answers are heavily influenced by where your skills lie; where you are most comfortable doing each part.
I'm not surprised that he can only blink both eyes at once. When you first talked about using Morse Code, I tried to blink out SOS (it's the only sequence I'm familiar enough with to do it fairly quickly), and found out that it was very difficult for me to blink that using left for dots, right for dashes, or even using one eye for dots and dashes (short/long blinks. I found it quite a lot easier to use both eyes; short/long blinks.
If your friend has sufficient control over the length of his blinks, Morse Code might still be the way to go. It depends on how effectively he can send using either scheme.
Good luck, and don't hesitate to ask more questions.
Edit: Just thought of something else. What is the fastest rate (approximately) he can comfortably and reliably blink? And what would you say the length of a short blink is, and the length of a long blink, again, keeping in mind comfort, strain. stress, fatigue, and the ability to reliably differentiate between the two. The reason I ask is that you should really have some relatively easy way to 'back up' if you are using the texting scheme. Think one long blink to back up one level, one longer one to start over (or two long ones), or perhaps 4 or 5 rapid short blinks for restarting a selection.