The difference is that arrow’s mapping behind the scenes enables automatic translation to any implemented “plugin” that is on the user’s implementation of arrow. You can extend arrows format to make it automatically map to whatever you want, basically.
And it’s all stored in memory - so much faster access to complex data relationships than anything that exists to my knowledge.