I took the Tallink/Silja ferry from Stockholm to Tallinn 2 years ago and I booked the buffet. You need to reserve for either the early or the late buffet, but I don't remember separately booking a table reservation. I don't know if it would be different on Viking.
Here's what I blogged about the buffet at the time:
I prepaid for the buffet. It was an impressive layout of different
kinds of food, and I had tasting portions of almost everything, but
everything was mediocre or worse.
So you might want to consider different dining options.
I can't answer your question about the cabin sizes.
On booking lodging, do your research and book where you get the best rate. By the way, I stayed at Hotell Bern in Tallinn, just on the edge of the old town. I loved it. Very friendly and helpful staff, and nice clean room in a good location that was quiet but still close in, and walkable from the ferry terminal. (A good walk with luggage, but doable.)