зависит от реальной задачи. StateMachine это конечный автомат - что из твоего значения (сосотояния) может быть только несколько переходов. Тебе не обязательно хранить промежуточное состояние "где-то".
Например мы парсим семантику (токены) - читаем рекурсивно StdIn пока не получим token или не произойдет ошибка. Прочитали токен - гуд - отдали его идентификатор. Ждем следующего In.
Если же речь идет о чем-то типа веб приложения и имеется ввиду состояние какой-то сущности реального мира, и мы хотим между request-ами сохранить значение, то скорее всего есть БД - через нее и делать состояние.
Так же можно в отдельной функции это делать (в терминах эликсира- в отдельном процессе/агенте)
Если речь идет об альтернативе state_machine/aasm - то реализация будет выбрана согласно задаче, быстрым поиском для elixir есть -
https://github.com/joaomdmoura/machinery