All my driver code currently does this, mostly because I worked with a very senior driver programmer for a couple years who had previously worked on the Windows kernel team for 15 years and he demanded it. I got in the habit of it and never really asked the question "Why?"
I know the obvious reasons, such as nonpaged pool is scarce compared to paged and you cannot make assumptions about the target system (like how much nonpaged memory will be available). But we recently inherited a slew of Linux driver programmers who started working with my driver code (apparently there is no such distinction in Linux) and they got all up in a bunch when I told them that code/data must be put in paged pool whenever possible.
So, what are the real reasons we do the paged/non-paged pool allocations?