I found having a ton of drivers that sometimes conflicted caused this. For HP using the universal driver helped a ton. Mostly because it removed about 20 differing versions of "HP4000/4050/4100/4150/etc/etc" drivers that were out there. If you have any kernel mode printer drivers, try to update them to Type 3 usermode drivers. IMHO 2008 (r2) handles printers better than the xp/2003 spooler.
--edit--
In addition... use the "print management" administrative tool. It will list out the printer driver versions in a easy to read list. Quite a few of the HP / Canon ones are the same driver with an INF restricted to one printer type. You then end up with the same base hp driver (HP's is very generic and supported hundreds of their printers) but small rev differences that can cause all kinds of odd server issues. IE "6.1.7601.17512, 6.1.7601.17534, 6.1.7601.12534, 6.1.7601.16745, 6.1.7601.17545" which means your server loads all of those drivers in to RAM. If you force update them all to say "6.1.7601.17512" now you have one driver loaded that manages 5 printers rather than 5 drivers managing 1 printer.