I'm surprised at the apparent consensus that the only solution is to re-implement "verbose" by some totally different method. I came across this issue before and I found a perfectly acceptable fix, which I didn't bother to make a ticket for because I didn't know if anyone else cared about this issue until I saw this thread.
The current implementation of "verbose" controls which messages to show according to the name of the Python module containing the code; and it extracts the module name from the Python interpreter state. Unfortunately, this doesn't play well with Cython modules, so if verbose is called from Cython code, it ends up going back up the call stack until it finds a Python module. Because Sage's matrix algebra routines have lots of diagnostic messages built in (definitely a Good Thing), and they are almost all implemented in Cython, this often leads to a slew of unwanted messages about matrix arithmetic, as in Daniel's example.
The solution I found was simply to add an optional extra argument to "verbose", specifying a string to use in place of the auto-detected module name (extending a mechanism that's already there for the function name); and then to grep through the Cython files in the Sage library, adjusting a few dozen calls to "verbose" to give the module name explicitly each time. This worked perfectly.