pull down to refresh

I'm sure it's stated somewhere in the nostr protocol spec, but I wonder why tags are specified as tuples instead of key-value pairs i.e.
tuples
{ "kind": 30315, "content": "Sign up for nostrasia!", "tags": [ ["d", "general"], ["r", "https://nostr.world"] ], }
key-value
{ "kind": 30315, "content": "Sign up for nostrasia!", "tags": { "d": "general", "r": "https://nostr.world" }, }