Here it works from IEx:
$ iex
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Interactive Elixir (1.8.0-dev) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> System.stop(1)
:ok
$ echo $?
1
So it may be a bug with escripts in Erlang/OTP? I would try to build a minimal erlang escript and see if you can reproduce it there. If so, that’s the bug.
System.stop(1)
is init:stop(1)
in Erlang.