It does not guarantee it, no. In fact, if you read the internals document, it explicitly states that there is some flexibility in the format in terms of how an encoder can choose to represent things. For example, the C++ API stores fields in schema order if you call CreateMyObject(), or it stores them in source code order if you explicitly call .add_my_field() instead. Then, the JSON parser sorts by field size as it encodes (to attempt to pack things more tightly), which is yet a possibly different order.
That said, if you use one particular API across different machines (32bit vs 64bit, x86 vs arm vs big endian) they SHOULD all end up with the same encoding, since FlatBuffers has been written to ignore these differences. If it doesn't, that would be a serious bug. We currently don't have an automated test that runs across all possible architectures that guarantees no such bugs however.
For dictionaries, CreateVectorOfSortedTables uses std::sort, so as long as the order of that is deterministic, so will we be.