I wonder whether this sentiment evolved naturally, or was created by merchants (the way we have an ever growing amount of holidays and customs that somehow oblige you to spend lots of money).
On the one hand, giving a well-received physical gift shows that you know the person enough to get them something they wanted. On the other hand, it also risks they'll have an unplanned item that kind-of-but-not-quite matches what they actually wanted, creating friction and inconvenience in their lives. I know this is a custom, but personally, I'd much prefer to get a monetary equivalent instead.
(One custom in my area I know where giving actual money is still expected is weddings. This is usually justified by the fact that organizing a wedding costs a ton of money, so this helps the newlyweds recoup the expense.)