Is verifying contract on BSCScan mandatory

I am planning to launch a token which is based on Safemoon but with many fundamental changes. even though I like to publish since my base for this token itself is Safemoon. but the same time, I don’t want so many new clones of mine coming out. is there a middle ground? what if I don’t publish the contract and explain them in the communication and website the reasons behind it.

No one should trust your contract if they can’t see the code.

If you want to avoid clones you can use a proprietary license. I doubt that would deter people from cloning, but it gives you legal recourse if someone does.