Imho one of the main issues with mw.messages is that it doesn't fail gracefully for all input. Unsupported constructs should preferably be treated as text instead of throwing JavaScript errors. And these errors can basically show up anywhere because people can customize translations directly via MediaWiki namespace.
Aside, jquery.i18n and mw.messages should not have duplicate functionality. Parsing should be centralised and libraryfied, but that is a separate project.