One thing I will say that's a disadvantage of making it one block, from my experience: things can get a bit lengthy (or rather, tall).
When only string literals are used as keys, the create dict block is nice and concise:
However, when we a generic block slot for the keys, things looked a lot more complicated. You can't have two block slots on one line in blockly. So you ended up with two lines for every key/value, and I had ugly "key" and "value" labels on them. Currently, our use cases don't demand generic block slots, so I haven't had to think about this. As we move towards a more full version of Python, we may have to go back to that model, unfortunately. Wish I could embed blocks inside of blocks!