А почему вы ни разу не упомянули defprotocol http://elixir-lang.org/docs/stable/elixir/Kernel.html#defprotocol/2; http://elixir-lang.org/getting-started/protocols.html и не сравнили их?
Впрочем, я бы не сказал, что товарищ пишет достаточно внятно: например, отсутствие заявленной имплементации приведет всего лишь к warning’у времени компиляции, об этом уж точно стоило бы упомянуть.
Ну и в следующей статье разделение довольно условное, опять же главное (имплементация протокола однаЮ из-за консолидации, а behaviour’ов — сколько угодно) снова не упомянуто.
Elixir: делаем код расширяемым с помощью Behaviour