The plan was originally to allow mutation, but since that got really complicated with resizing, that plan was shelved.
We still have plans to provide a built-in method for mutation, which could go in one of two directions:
1) Allow mutation of scalar fields, and strings/vectors whenever they don't grow. Maybe allow "simple" reallocation by appending new objects at the end, which would generate garbage in the buffer. This is not universally useful, but at least it keeps with the theme of efficiency that FlatBuffers is all about.
2) Allow the code generator to output additional function to turn a read-only FlatBuffer into a mutable data structure, and back into a FlatBuffer. This is more universally useful, but would entail a lot of object allocation, which is very much against the philosophy of FlatBuffers.