${domain} is a somewhat recent addition to Postfix. I guess the docs could say to use ${domain} instead of ${nexthop} if Postfix is newer than X (should look up what version added that).
${domain} parameter has been added starting with Postfix 2.5, which means that people using "enterprise" linux distros that usually ship with old versions of software won't be able to use it.
Anyway, I'm guessing that the real problem here lies in the fact that John used "mailbox_transport = dovecot" to instruct Postfix how to deliver e-mails, instead of using virtual_transport Postfix parameter as instructed in the Dovecot's wiki. Parameter mailbox_transport is used to set optional message delivery transport that Postfix's *local* delivery agent should use for delivery and since it's actually a local delivery, nexthop is by default set to $myhostname (using local_transport parameter), instead of the actual virtual domain.
-- Best Regards, Marko Njezic - mr.maX @ MAX Interactive corp. Personal: http://www.markonjezic.com/ MAX's Empire: http://www.maxempire.com/ MAX's HTML Beauty++ 2004: http://www.htmlbeauty.com/