I'd guess that the user wants the same things to be printable as they want to be exported to PNG or generally visible as part of the image to be seen by viewers.
I don't have much experience with printing from vector editors, but I agree with that. I think that a separate "printable" attribute is evil. It's a sure way to get costly suprises when you discover that you wasted paper and ink because some element had this attribute set or unset contrary to your expectations. It's especially bad since there's currently no way to preview what is printable and what not, other than to print it (or, at least, print to file and view the file, which is still very inconvenient).
If "seen by viewers" includes the use of other SVG agents (e.g. use of a command-line tool for printing or exporting to another format, or embedding in e.g. HTML before printing), then that suggests we should use SVG's visibility property for Printable, and use custom data to indicate what things are currently visible/hidden.
Yes, and more than that: I think we don't need any custom visibility attribute at all. Auxiliary things like guides are not visible in external SVG renderers anyway, because they do not correspond to anything in SVG. And as for regular SVG objects, I'm sure that hiding/unhiding anything in Inkscape must hide/unhide it everywhere. This is the simplest and least nasty-surpriseful approach, and I don't see any reasons to do otherwise. So, my opinion is that we must only use the visibility CSS property and nothing else.