Parts stored in the table are references to parts that exist in memory during runtime. Think of them as unique IDs to find the appropriate objects anywhere in game (and also outside the data model).
Our own serialization, however, has to be done when storing properties of parts in the data store. The data is going to persist long after the server closes, engine references and memory addresses will be different in a new game instance. We are going to create a new part with a new ID and apply stored properties.
Furthermore, serialization allows us to compress the data and save as much memory as we can to comply with data store size limits.