Model scripts are usually 'scripts', just like their name says. If you understand shell scripting or programming of any kind you should be able to make out what it is doing.
When you run 'lp' it contacts the lpscheduler (lpsched). lp passes the file and the options you specified, like the printer name and number of copies, to the lpsched.
lpsched takes this information and does several things with it. This is where things get confusing. For some reason it is very hard to find a comprehensive document on how the lp subsystem works. This site is about the best I have ever found:
http://www.unix.kg/eng/solaris/syste.../page007.shtml
lpsched takes the options passed by lp and creates 2 files, one in the var/spool/lp/tmp and the other is in /var/spool/lp/requests.
lpsched just uses the on in the tmp direcotry for logging and info purposes as far as I am aware. It uses the one in requests to send info to the model script
I am seeing the same thing as you. I don't remember seeing this in the past but it is not working on my home box (Solaris 9).
Looking at the model script you will find "copies=$4". It is getting $4 as the 4th entry in the /var/spool/lp/requests file. If you disable your queue and look at this file, you will see it will always be '1' no matter what you pass for -n. I tried several other options but they didn't work either.
The interesting thing is the file in tmp has the correct number in it (the C value). I searched sunsolve and couldn't find any articles about this. Hopefully this long discussion will trigger someone's memory.
The only work around I can suggest for now is to change your model script to look at the tmp directory to find the copy info. This is up to you if you feel confident you can do it and feel it would work fine in your environment.