Sí, hay una diferencia, no son lo mismo. Es cierto que obtendrás los mismos resultados, pero el motor funciona de forma diferente para ambos. Uno de ellos es un literal de objeto, y el otro es un constructor, dos formas diferentes de crear un objeto en javascript.
var objectA = {} //This is an object literal
var objectB = new Object() //This is the object constructor
En JS todo es un objeto, pero debes tener en cuenta lo siguiente con new Object(): Puede recibir un parámetro, y dependiendo de ese parámetro, creará una cadena, un número, o simplemente un objeto vacío.
Por ejemplo: new Object(1)
, devolverá un Número. new Object("hello")
devolverá una cadena, significa que el constructor del objeto puede delegar -dependiendo del parámetro- la creación del objeto a otros constructores como string, number, etc... Es muy importante tener esto en cuenta cuando se manejan datos dinámicos para crear objetos..
Muchos autores recomiendan no utilizar el constructor de objetos cuando se puede utilizar en su lugar una determinada notación literal, en la que se estará seguro de que lo que se está creando es lo que se espera tener en el código.
Te sugiero que hagas una lectura adicional sobre las diferencias entre la notación literal y los constructores en javascript para encontrar más detalles.