You can use whatever command you want to mean whatever you like, as long as you're consistent in your criteria for that particular command, so train the way it makes sense to you.
For me, stay implies that the dog remain in a particular place in a particular position: sit/stay, down/stay, stand/stay, regardless of whether I return to the dog or release the dog to come to me.
I use wait in more of a "do not cross this invisible line" way. If I have my dog wait at the door while I walk out to get the mail or the newspaper, I don't care if they actually stay right there. They can turn away from the door and walk further into the house if they want, they just can't cross the threshold. I use wait as I set down their food bowls before releasing them to eat, (although this is actually a default behavior now, I don't actually have to tell them to do it anymore), before letting them jump into the car or out of the car, or going in or out of the house. I also use wait when the dogs are ahead of us at the park and I want them to stop moving until we catch up, and then I'll release them to continue walking.
Forever would have been too short
NAFA: FM, MBDCh-S