Seems like Io's "forward" is a lot like "did-not-understand" (and similar mechanisms in Ruby/etc. languages), but it takes priority over messages that would've otherwise been understood.
Yes its same as did-not-understand/method_missing/__getattr__/AUTOLOAD but no it doesn't take priority over other defined messages.
For eg, If I change the first line in my code above to:
Builder := Object do (
foo := method (arg, write (arg))
)
And do: Builder do (
h1 (
foo ("Foo here!")
p ("paragraph")
)
)
I get a untagged "Foo Here!": <h1>Foo here!<p>paragraph</p></h1>