Dynarec can optionnaly handle Strong Memory Model emulation, but it's disable by default to have maximum emulation speed (it's the BOX86_DYNAREC_STRONGMEM env. var.).
Yes, it would be more efficiant, but it will also be more costly to generate. It would also render the handling of Signal more tricky (need to always be able to go back from the RV64 address to the orignial x86_64 address in case of a SEGFAULT for example). Also, intra-block jump make this more complicated. Box64 does a limited full-block optimisation for the Flags handling and SSE/x87/MMX register attribution, but that's pretty much. Some constant propagation mecanism would be nice and could save a lot of opcode, but no worked as been done it that direction for now (maybe later, it always bother me when I look at generated code dump to see also those multiple constant assigned multiple time).
I was a bit doubtfull of that claim about RV64 code compacity compared to x86_64, so I tried myself. I used 2 of projects https://github.com/ptitSeb/stuntcarremake and https://github.com/ptitSeb/hydracastlelabyrinth.git and I built them with default option, in release mode on both RV64 and x86_64 to compare the generated file size.
For StuntCarRemake: RV64: 191248 x86_64: 260616
For HydraCastleLabyrinth: RV64: 652984 x86_64: 693312
And yeah, RV64 is indeed more compact than x86_64!