Should I always put -(hyphen) when I write this word (all-you-can-eat)?
Yes, you should always use hyphens for the term "all-you-can-eat", because this term is made up of compound words which modify a noun. In this case, the noun here is "buffet". Since all of these compound words are linked together to form a singe adjective, you must use hyphens between the words. Ex: The dining hall is a bit expensive but it's all-you-can-eat! Ex: You can't take home leftover food at an all-you-can-eat restaurant.