Por padrão, NSDateFormatter é definido como localTimeZone. Como seu dateString não tinha informações de fuso horário, ele calculou o tempo wrt para localTimeZone. Se você sabe que o fuso horário do seu dateString é UTC, então você precisa definir isso para dateFormatter.
NSDate representa o tempo absoluto, a representação pode variar entre fusos horários, mas é um valor único e não será afetado pelo horário de verão.
-(NSDate *)formatDateWithString:(NSString *)dateString{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate* date = [dateFormatter dateFromString:dateString];
NSLog(@"Formatted Timestamp: %@ - Original Timestamp: %@", date,dateString);
return date;
}