I'm moving our printers over from scripted install to being assigned via GPO itself. Is there any way of targeting the printers so they only install if the user is local (ie: on the same site) other than assigning them at the site level?

Either that or can I split printers in a gpo so users on Floor1 get printers on the same floor whilst Floor2 get another set?

Site makes sense for mobile users with laptops as you will never know where they might be, and on the other hand you probably only need to give them one printer for a location / floor rather than every single one.

Or just teach people how to add printers from the (active) directory themselves - search by name (which is on the label on the printer, right?) or by functionality ("I need to print A3 colour today") and double click the one you want. Bingo.
If you're using Vista or Windows 7 it also has the neat trick of remembering your default printer for each network location, so it's best if you can let that do it's job and don't destroy / recreate every printer at each logon.

My gut feel would be to target machines with policies at OU level, and use security groups with computer accounts in for floors or other divisions, and set each policy to use a group for security filtering.

Alternative might be to target users, again by groups, and you can probably fix some of the group membership with nesting eg if you know that users in the group LondonSales are all on 4th floor, just nest that group inside, rather than adding users individually.
So if you use a site policy for mobile users, apply a security filter to it for the group called "LaptopUsers" to stop it applying to anyone else.