Should QA review some code in order to write better tests?

I heard that when bugs are fixed or incremental changes are made (i.e. not new feature development), then QA should review the code changes because it might help them to come up with better tests.

For example, an input field for a person’s name accepts any characters. It has been upgraded to handle special characters. If you know this, then apparently you will make better tests. I wonder why I need to read the code to figure out this incremental change. Shouldn’t it be called out in the change ticket or in some document? If the change is complex, then how can I understand it without knowing the code and architecture the way a Developer does? I think I would need that knowledge to be able to come up with better tests.

As an aside, if the QA starts learning more of the Developer knowledge, then at what point do they essentially become a Developer? Why not just make the Developers do the testing if the QA is expected to understand the code as well as the Devs?