SL was designed prior to published app technology and when SL is set up as a published app, it will begin by re-directing the local printers and initializing them.  This appears to be set to a fixed amount of time rather than when the task is done.  So users with many printers can sometimes run into a situation where SL has not yet completed parsing through the list of printers but moves on to the next task during login/start up.  When this happens, SL may not recognize the printer that the user is trying to use and will default to the first one in the list/local printer/something other than what the user wants.

Starting in SL 2011 (no service pack required), you can use a solomon.ini setting to build in a delay that you can customize to allow adequate time to redirect all printers:

[miscellaneous]
RemoteAppDelay = <value between 0 and 99 seconds>


So for instance, if I thought a 7 second delay would do the trick, I would add the following to my solomon.ini file:

 [miscellaneous]
RemoteAppDelay = 7