Since Geyser objects are interacted with via their own methods, it would actually be easier to use with Geyser (though you would need to modify the appropriate functions to also echo/append data to the relevant buffer). I don't honestly know about Vyzor, but it can be done with basic miniConsole objects, so it CAN be done, but I'm not sure the level of complexity involved.
Each miniConsole needs an independent buffer, yes, and while I would imagine it would affect processing time, I haven't noticed any overly large delays due to using it (but I only have 4 windows I'm applying it to). Basically, you clear the display window, change the window wrap length, and then copy over every line from the buffer associated with it. Here is the function that does the actual work for my Simple Window Manager:
Other than that, you just have to put in something to write to the buffer whenever you write to the console window by overwriting the Geyser.MiniConsole.appendBuffer and Geyser.MiniConsole.echo (and related) functions, and obviously have the buffer word wrap length be sufficiently large so as to not wrap any lines it is sent (I use 1000). I may or may not be using the most ideal approach here, but it seems fairly robust, especially if you put in some mechanism to delay the rewrapping until after a user is finished resizing a window (instead of doing it as they are changing the size, and so end up doing the same thing hundreds of times).
If there were a way to detect a soft wrap rather than a hard wrap, then I could do it with one buffer by unwrapping a window into a buffer and rewrapping it as I wrote it back in. But I haven't found a way to do that.