Stateful EJB instances use an excessive amount of server-side memory. There is 300-400 bytes bytes of memory used per business method per instance, which quickly adds up. Part of this is caused by https://issues.jboss.org/browse/WFLY-3754 which treats public final java.lang.Object methods as business methods. Another part is caused by a normal interceptor chain having 5 of the 8 interceptors not shared.
Which version of EAP did you observe this? It should be fixed in EAP 6.3 which has the stateless interceptors patch.
I'd accidentally overwritten by "eap-6.3" directory with 6.2, so was running the older version. I've done some testing with 6.3 and it the memory usage is much lower. So the main memory usage I was looking at was resolved by bug 1022265.