If you look at the signature of the abstract class DBMigration in the System.Data.Entity.Migrations namespace:
public virtual void Down();
public abstract void Up();
You'll see that Down() is marked virtual and Up is marked abstract. The difference between virtual and abstract is that an abstract function can have functionality in it.
What kind of functionality can the Up() function have default and why isn't it the case with th Down() function. 
 
     
    