Why assign or publish? well I guess it comes down to wheather or not the software package is necessary or not.
Have a read of this it explains the different ways to deploy software via the use of group policies.
http://www.windowsnetworking.com/articles_tutorials/Group-Policy-Deploy-Applications.html
In brief if you have mandatory software personally I would recommend that you assign it directly to the computer that way it is automatically installed without user interaction (if it is a quiet/unattended install).
If you have optional software you could just assign or publish to the user and have it show in the add/remove application or show a shortcut on the start menu so when clicked it will start the install.
Also if you have a package that needs user interaction to install because there is no options to create a fully unattended install you would go for assigning or publishing to a user.
(If you have to do this its good pratice to provide some documentation on how to do so, nice screen shots etc).
One thing that i think is very important in regards to how you want to do the deployment is:
1: What rights do your user have over the local system.
2: how computer literate are your users, some people will freak out over the msiexec utility when it pops up stating that it is doing an install, let alone how they go about following the install steps.