Your example is a little bit simple, maybe to simple to catch the full advantages of dependency injection, but the first pattern is better because you decouple your Employe class form the Address.
In this case:
class Employee { private Address address ; public Employee() { address = new Address(); } }
your Employee class is responsible for building an Address. It uses new Address(). You are now fixed to this kind of address. If you want to change the address implementation then you need to change the code.
But an address comes in many shapes and sizes. How would you make your Employee work with both an European Address and a Japanese address when you instantiated exactly one type of address in your code?
To make this more clear, let's expand a bit your example and consider Address to be an interface. Programming to an interface is another good practice. So now we have an interface and an implementation:
class Employee { private Address address; public Employee() { address = new JapaneseAddress(); } ... }
See the problem now? If you later want an European Address you will need to go into the code and make some changes.
If instead you have this:
class Employee { private Address address ; public Employee(Address address) { this.address = address; } ... }
you can now inject whatever implementation you like, without touching the code.