This is how I understand it (not necessarily confident that I'm right):
An object literal is useful when you only have one need for that object (or a single occurrence).
A constructor function produces independent and isolated instances of that object literal. The new keyword is somewhat of a syntactical sugar that implements a constructor function under the hood (pretty sure, but could be wrong).