Well, I found a solution to my problem, yet I don't understand fully why the default works the way it does.
I needed to add an @ejb.util generate="physical" tag to the bean class.
It's a bit confusing that the tag in the build.xml file will generate a util class, while the @ejb.util tag in the class file (if omitted) would normally mean that a util class wouldn't be generated. Why does this exist in two places? A question for the XDoclet group for sure, but I wanted to pass on my finding.
Followup question: when does one use physical vs. logical lookups? Is there a reason to use the fully qualified component name over the JNDI name or vice versa?