I had a fussy eater dog. Worst one you could imagine, I must have gone thought virtually every dog food on the shop shelves with him, then discovered that I had made him worse doing so. I fell into the trap of deciding if he didn't eat the food I put out, he didn't like it, so rushed out to get something else. And taught him to be finicky by doing so. Because what this actually teaches a dog is 'if I leave my food, they will get me something else which is better', so you do, and the dog scoffs it down with gusto for about three days because its new and exciting, before deciding it's boring, remembers that leaving the food gets it new stuff, so that gets left, and you get an endless cycle.
To overcome a fussy eater:
Put the food down for 20 minutes and no longer. If the dog has not eaten anything in that time, pick the bowl back up and repeat a few hours later. This will teach the dog that food is only available at certain times and if it doesn't eat it then, it won't get anything else.
Don't have food available constantly, so don't put foods down in a bowl for the dog to pick at throughout the day. This teaches that there is no set feeding time, and it will loose its natural incentive to dive for the food as it knows its there constantly no matter what. Dogs are natural opportunists, in the wild, if they catch something, that might be all they get for the week or more, so if there's food about they eat it, incase there's no more coming! Also, in a pack, they would have to fight to get and keep their share of the catch, which is why they usually dive for their food bowls as if their never fed. One single dog in a house will learn there is no other threat for food and may become lax about the need to get in first. You taking the bowl away will let it know its not a free for all, and that there is a 'threat' and put that incentive back.
If the Dog doesn't eat what's given after 20 minutes, take the bowl away, actually put it right out of sight/reach in the cupboard in view of the dog, and do not give anything at all until the same time next day. If it still goes uneaten do the same. Dogs aren't stupid, they won't starve to death, it might take a day or so ( longer if its got away with it for quite a while), but eventually it will sink in there's nothing else coming so it'd best eat what's put out.
To stop him eating late at night, put the bowl down earlier, you are the boss, you decide when meal times are, just like you decide when walk time, and bed time is. Do not allow your dog to demand and decide when it wants to be fed.
Your dog is leaving his food for one reason - he's discovered that if he does you give him treats and yummy human food instead! You are effectivly encouraging him to leave his own dinner and rewarding him highly when he does so!