LineItem may have additional fields and may not. Its implementation specific.
Putting additional attributes complicates db mapping, but simplifies control layer. I prefer to have pure OO in my control layer and let db layer to deal with the tables and mappings.
What am I trying to say is that in database realm product state is expressed as LineItem. In OO code there is no such thing as LineItem. There is only the state of Product object.
Product, freshly inserted into ShoppingCart has one state. Product retrieved from saved has different state. Product, retrieved from order history may have state different to those two. Its up to OO persistence layer (read OR mapper) to decide whether Product stored as LineItem. But who said that ROR has proper OR mapper?