When a new Date() is used it passes a date-time object to the variable (e.g. Fri Oct 28 21:16:39 GMT+05:30 2016). So the time part of the object fails the comparison logic even if there is difference by microsecond.
This script loose the time part by using Utilities Class's formatDate method and compares Col A Date to Col B and returns whether its past,present or future.
function compareDate(){
var ss = SpreadsheetApp.getActive();
var sheet= ss.getActiveSheet();
var Date1 = sheet.getRange("A1:A"+sheet.getDataRange().getLastRow()).getValues(); //Get ColA
var Date2 = sheet.getRange("B1:B"+sheet.getDataRange().getLastRow()).getValues(); //Get ColB
for(var i = 1; i<sheet.getDataRange().getLastRow();i++){ //iterate through date
var fDate1 = Utilities.formatDate(Date1[i][0], "GMT","yyyy-MM-dd"); // formatting col A date without time
var fDate2 = Utilities.formatDate(Date2[i][0], "GMT","yyyy-MM-dd"); // formatting col B date without time
//Comparison logic
if(fDate1 == fDate2){
sheet.getRange("C"+i).setValue("Present");
}
else if (fDate1 < fDate2){
sheet.getRange("C"+i).setValue("Future");
}
else if (fDate1 > fDate2){
sheet.getRange("C"+i).setValue("Past");
}
}
}