Both sentences are correct as written. "He is here for 25 days" is not the same as "he has been here (for) 25 days." If I travel to a place with the intention of staying for 25 days, I can say, early in that trip, "I'll be here (for) 25 days," or "I'm here (for) 25 days." I think there is an implied "scheduled to be" between "I'm" and "here."
You could omit "for" in either case, but it's better if you leave it in.
"He is here (for) 25 days" means that he is scheduled to be here for a total of 25 days. He may have just arrived yesterday, or a week ago; all we know is that the total duration of the trip will be 25 days.
"He has been here (for) 25 days" means that 25 days have passed since his arrival. He may plan to stay longer, or he may be getting on a plane to leave as we speak. All we know is that he has already spent 25 days here.