Info about the PMOFlags byte (only bit 0 is currently used) :
If PMOFlags bit 0 is set in a PMO_LOADING_FILE packet, LFS has reached the end of a layout file which it is loading. The added objects will then be optimised.
Optimised in this case means that static vertex buffers will be created for all objects, to greatly improve the frame rate. The problem with this is that when there are many objects loaded, optimisation causes a significant glitch which can be long enough to cause a driver who is cornering to lose control and crash.
PMOFlags bit 0 can also be set in an IS_AXM with PMOAction of PMO_ADD_OBJECTS. This causes all objects to be optimised. It is important not to set bit 0 in every packet you send to add objects or you will cause severe glitches on the clients computers. It is ok to have some objects on the track which are not optimised. So if you have a few objects that are being removed and added occasionally, the best advice is not to request optimisation at all. Only request optimisation (by setting bit 0) if you have added so many objects that it is needed to improve the frame rate.
If you are using InSim to send many packets of objects (for example loading an entire layout through InSim) then you must take care of the bandwidth and buffer overflows. You must not try to send all the objects at once. It's probably good to use LFS's method of doing this : send the first packet of objects then wait for the corresponding IS_AXM that will be output when the packet is processed. Then you can send the second packet and again wait for the IS_AXM and so on.