I think that a separate "printable" attribute is evil....So, my opinion is that we must only use the visibility CSS property and nothing else.
Strongly agreed.
Anyway, if someone someday really absolutely needs something to be rendered on a display but not printed, they should eventually be able to use the standard CSS @media stuff. It's not something we should have a special case for.
On the other hand, it occurred to me that we may want to use arbitrary objects as guides (as some other vector editors do). Such objects would have to be SVG objects but, as guides, only visible in Inkscape. How to handle them? One idea is this: store such objects in <defs> with an inkscape: attribute telling Inkscape that they are guide objects and must be displayed correspondingly. Other renderers will naturally just ignore then and yet we will be able to store arbitrary SVG for our purposes.
-mental