alias :new_method_name :old_method_name
alias_method :new_method_name, :old_method_name
alias_method :baz, :foo
The word he's looking for here is more expected results. alias_method is determined at runtime and not when the code is read, like alias, so it behaves more how we would expect it to.
What do you mean by unpredictable. Navely, one would say that the option that is less flexible will be more predictable. Also, can you provide any practical example of benefitting from redefining alias_method?
alias_method can be redefined if need be. (it's defined in the Module class.)
expecting that methods are defined on the fly during runtime is not what most programmers expect. At least it's like flying pigs to me.