D.K.
Maybe try an earlier bedtime, believe it or not, an overly tired child won't sleep but be disrupted sleep and not sleep well. If they are tired at bedtime it backfires. My son is the same age and same way , not matter what time he goes to bed he wakes the same time. However my son is four and is in bed by 7:15, sleeps until 7:00 am. On non school nights I let him make it to 7:45-8:00 sometimes, however he is still up at 7am so I need to make sure he is well rested and gets his sleep. Even missing that 45 minutes can cause him to be a grump the next day.
Try 30 to 45 minutes earlier, see if that extra helps him get the rest he needs. Also don't get up unless you have to. At 4, he needs to be able to get back to sleep.
Also, what helps with my son is a bedtime bowl of cereal, piece of toast before brushing teeth. He is typically really hungry after sleeping 11 or so hours so I found if he has a snack close to bedtime, something healthy and filling he sleeps in better.
My kids adjust sleep patterns on occassions, get blackout shades if he is trying to wake with the sun. Just don't go into him.
If he gets in a habit of waking you going in there, giving him a drink he will not learn to fall back to sleep himself. Just remind him if he wakes up and you are still asleep HE MUST stay in bed unless he just needs to pee and then must go back to bed. Try hard not to go in to his room if you don't have to.