So the "set serv=abc" isn't part of the mml login, it's part of the script? Your original code was #!/bin/sh and not #!/usr/bin/sh.
I don't know anything about mml, is the login the only line that is what goes into mml? I'm assuming that the set serv and set term lines are part of the csh script and not mml, yes?
The only way I can test this and come up with the results you're seeing "terminator not found" is by using csh which is different than the code you've given. Please post the exact code you're using. You might try removing the hyphen from the beginning of the here document since it doesn't appear to be supported with csh.
Were you intending on re-posting your original question? I was expecting to see the code that had the here document that was generating the "terminator not found" message. Also, using expect might also be a good solution if there is any logic you need to apply during the interactive portion of the script.
#!/usr/bin/csh
start.sh mml << EOF
login abcd piss internal
set serv=PPS
set term=internal
EOF
means "terminator not found"? Can you switch to bash instead of csh for this segment of code? If you're getting some other problem, can you give more details than "doesn't work"?