The way our trainer explained to me was that "Stay" should be a "no arguments" command and should be used when I want the dog to freeze in place until I return
to him and give him the release word. Useful, for example with a very muddy dog and no towel at the door just then.
"Wait" is a less formal command - to tell the dog to stay where he is but not necessarily in the same position, i.e if the "wait" was given with the dog in sit and I take too long to release him, it's OK for the dog to lay down if he feels like it. Also, I can release the dog from wait from anywhere, I don't have to return to him and he does not have to come to me.
Kind of the same difference as between "come" and "here" "Come" is "no arguments, drop everything and get back to me on the double" while "here" is...OK, finish sniffing around that bush and let's go".
But, as it has been said here before - lots of trainers, lots of methods. Use whatever you're confortable with and works best for you and your pup.