Yes, this is normal behavior, but it's also controlling behavior-hate to say it. 3 and 1/2 is plenty old enough to understand certain things she must do including saying thank you for a gift, or a glass of water, or anything someone gives her. She doesn't have to open it first. She doesn't even have to open it if you want to tell the person she's too shy to open it. She just has to say thank you immediately when it is given to her, and if that obstacle is out of the way-chances are, she won't mind opening it. She knows what you want her to, and she's choosing not to. Same as not eating or anything else.
Don't fall for the shyness act-and you said she's usually not shy. The shyest child in the world can say thank you, not because it's meaningless and insincere, but because it's human etiquette, and you're raising a nice child. You don't need to let her get any older to wait for it to happen "on its own". Even when she gets the drill, there will be times she'll slip and do the shy thing, that's why you need to enforce it, so if you remind her, she reacts.
On the rare occasion that my 2 and 1/2 year old gets shy and "forgets" to say thank you when someone gives her something, I use my quiet, "I mean business" voice to say, "Say, Thank you." right away-no awkward pause, just an instant command. And she does, because like anything else, she knows an order will be enforced, so there's no battle. 99 percent of the time she says it on her own anyway, it's been so ingrained since she was born.
It doesn't matter that the person sees that I'm "making" her say it, they just know it's my job to teach her manners, so I doubt they think it's really mean to tell her to say it. I actually had a friend say to me, "I think it's so nice you make your daughter say thank you, my sisters kids don't say thank you for anything, and she just lets them get away with it."
I also be sure to set an example by saying thank you for things and pointing out how nice certain gestures are to her so we should say thank you etc.
If you want her to learn, you need to train her at home that there is a consequence for refusing to say thank you just like for any other disciplinary issue when she refuses to do what you say. It's not something mean or outrageous you're expecting her to do.
I've seen the parents who don't make their kids say thank you, and the kids who don't say thank you, and it seems sad to me that their parents are letting them be bratty. It's not difficult to teach, and society has lost enough polite codes for kids to follow.