What exactly is wrong with referencing both System.Web and System.Windows.Forms in my class library?
For example, library could contain some code which needs to reference Web or WinForms-specific classes.
Well, if you do this, you will have overhead if you use that library and the danger, that Web code uses the Forms lib and vice versa. I would split it in 3 Parts - a common one and one Web and one Forms part, so you only have to use the common and the part you need. By that, you guarantee that you only use the libs you are supposed to.