The main reason for using the value objects is because in comparison to using enterprise beans, it is always efficient to pass a single argument with multiple fields in it than passing fields individually. Also it also helps us to enforce the business rules associated with an entity in a lot easier way.
Some technologies (like EJB) have performance issues with exchanging large numbers of component data items.
Adding, changing, or deleting a component data item is much easier affecting far fewer objects. Business rules regarding allowed values for component objects are easier to identify and maintain. Additionally, technical features, such as making these objects Serializable for use with enterprise beans, are very easy to implement.