This encoding format preserves the properties that:
- Everything is a valid encoding of something (needed to cleanly separate questions of availability and validity)
- You can prove existence of a blob in the blob list by only providing Merkle branches to the blob contents
Justin’s scheme satisfies both properties. RLP satisfies neither. For a particularly egregious example of RLP internal ambiguity, consider something like:
0xb0afaeadacabaaa9a8a7a6a5a4a3a2a1a09f.......83828180
Any suffix of that RLP data is itself valid RLP, so a Merkle proof of membership of any supposed sub-chunk doesn’t actually validate that that chunk actually is a chunk in the full data.