It's my understanding that there are two ways to invoke Python; for lack of better terms, I'll call them "script" and "immediate". The field calculator submits a string to the parser in "immediate" mode, but because it's not a file, you get more generic errors (and sometimes it's just "error occurred").
Python toolboxes have a .pyt suffix, so .cal isn't the only quirky suffix for Python-like code.
I expect the UTF-16 encoding is due to the default character width in the Windows app, and avoiding the need to translate to UTF-8 before submitting to the parser.
I've been programming since I was 12, so I'll stay out of the debate on how to teach non-programmers scripting languages. 
- V