Identity-based encryption papers describe that system parameters are declared as public. However,in real scenario, how to distribute system parameters to users?
Public parameters (or system parameters as you call them) can be distributed however you want. Papers which introduce Identity-based Encryption schemes usually only present the scheme and not how it can be applied in the real world 1. The public parameters in IBE can be compared to the pre-shared data in the Diffie-Hellman key exchange protocol where both parties have to agree on a shared modulus and generator before starting the protocol. There are different ways to distribute such data. Here are two:
Bake (put into the application code) the public parameters into the application, so that every client has the same parameters and don't need additional trust negotiations. This will be a trust root.
Query the public parameters from some other party in a secure manner (signed and not necessarily encrypted). Each client has to have some trust root (certificate of the third party) for this to work.
1 If you see a commercial product which uses IBE/HIBE/ABE/PE/HVE/FE, please write a comment.