If they are only sharing the auth table, then it's not a big deal, since the auth tables are there by default. But plugins are meant to be completely isolated from each other, completely unaware that other plugins exist.
Putting core logic (accessing data) into modules and using more generic plugins to handle the views might be the best way to go. I use modules extensively, and only use models to set up the module instances as global variables. I use the singleton pattern for my modules, which works well for me, but Bruno's approach is also pretty good, but a little more complicated.