In that case, you're just describing about maintaing a fluent API, which is painfully verbose to maintain for every type.
It also is joyful in the sense that it will throw exceptions at the place where you make errors and not at some later time (for example, you won't get a 'oops, there is no February 29 in 2013' exception when you print a date). I think the designers of Java value that higher than the extra work of language implementers.
So, what month is the date set to after that code? Builder.build(), on the other hand, can throw when called on a partly initialized builder. A builder also can (I don't know whether Java's builder do this) accept variants such as:
So, builders have their advantages.