media-gfx/sane-backends-1.0.24-r3 supplies /lib/udev/rules.d/41-libsane.rules which seems to be using ATTRS where it should use ATTR, at least for my HP 6300C scanner: ATTRS{idVendor}=="03f0",ATTRS{idProduct}=="0601", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes" When I add /etc/udev/rules.d/70-usb.rules: ATTR{idVendor}=="03f0", ATTR{idProduct}=="0601", MODE:="0664", GROUP:="scanner", ENV{libsane_matched}:="yes" and restart udev, my scanner gets the correct group "scanner" instead of the incorrect "lp".
Ok, admittedly I don't know much about udev rules, but comparing the two that you posted, I noticed that yours uses GROUP:="scanner", whereas the one from upstream uses GROUP="scanner". If you change := to =, the device will probably end up with the LP group again. I wonder why the group is lp in the first place? Are that product and vendor ID being uesd for one of those multipurpose printer/scanner combos as well as the HP 6300C? I don't think the attr versus attrs distinction is causing the issue, though. You might try asking about this on the sane-devel list.
Please retry with sane-backends 1.0.25_pre* snapshot