I don't mind nicknames per se. My Dad wanted to name me Mandy, my mom said she needs to have a full name not a nickname on her birth certificate. So the choices were Samantha and Amanda. Neither wanted Amanda so Samantha it was. I went by Mandy until I was in high school, then I just felt like I was 8 years old everytime the teachers called me Mandy. Soo, my sophmore year I no longer "corrected" them on the first day of school that it wasn't Samantha it was Mandy. Within a short time my name was quickly became "Sam".
My Dad never did stop calling me Mandy until the day he died.
Now most people call me Sam, my DH calls me Sam (its almost odd to hear him call me Samantha
its so rare). I do introduce myself as Samantha and sign most stuff as Samantha but it gets shortened by most people and I really don't mind.
My DH is David. Not Dave, David. He honestly doesn't care for Dave, there are a few people that call him Dave and he doesn't mind but most people especially people that don't know him very well and just assume that he goes by Dave, he'll be like "excuse me do I KNOW you?? because my name is David."
My DD's name is Victoria Leigh, we call her Tori or Tori Leigh or TL or Bear or Sweetpea or a dozen other names.
My DS#1 is Jackson. He is called Jack or Jackson. He knows both names and likes them both... actually he calls himself "Jack Jack" most of the time now.
I occasionally call him Jackie when we are at home and thats okay, nobody else does just me and once and a while DH. I'm not sure I would be okay with it if it was someone else who just decided to "nickname" him because they wanted too. I thin that is a bit presumptious.
: DS#2 is just called Aidan by most people, we some times call him AJ (James is his middle name) or Little A but that's only us around the house. Everyone else calls him Aidan, so no nickname issues there.
Personally I do think its a bit rude of your MIL to just decide that she's going to call him Zach when you have made it clear that his name is Zachary and not Zach. Sounds like she's trying to powertrip a little bit.
I've found over the years its honestly best to just not tell anyone what name you've decided on for the baby until the birth. For some unknown reason before a child is born EVERYBODY feels that they have the right to express an opinion on a name choice.