There are lots of langauges and many of them handle this differently, but since the examples appear to be more Java-ish (the original post was about Java, at least), I answer based upon that:

In most cases, the difference is more preference than anything. Ultimately, a chunk of memory gets allocated, a reference associated with it, and potentially, one more more methods are executed.

There are several advantages to using static factories (though that does not imply that they should be used above all else), such as: being capable of returning a more generic type than a contructor, and separating the construction of objects from where they are accessed from.

A couple of examples:

When using the "new" keyword (standard constructor mechanics), the type returned is known at compile-time. However, a static factory method may return a more generic type, leaving the details of construction and choice of the actual constructed object hidden from view (view from the caller). In Java, for example, a static factory may produce objects that implement a particular interface. Using the "new" keyword means the the decision about which actual class is constructed has already been decided. This may be a good thing, and it may not matter (depending upon how it's used).

It's common for developers who do heavy unit testing (at least in the Java world) to use static factories so that they can more easily factor out the construction of objects (i.e. the use of mock objects). This helps make their code more "testable." Again, this is not to suggest that this is a good method of doing this, but that it is a common idiom.

Dan