I use i3, and I can set any window to "floating" mode. You can have all windows in floating mode, which makes the whole desktop behave like a regular stacking WM, though you can't "minimize" them, so it can quickly become a mess. You can even take a group of windows [0] and have the entire group be a floating window, with the individual windows inside the group continuing to follow the tiling model among themselves.
But it's not something I find practical for some reason, even though I have a fairly simple keyboard shortcut to switch between tiling and floating. Maybe because this isn't really how you're supposed to use i3, so there's no "maximize", or "snap to edges" or similar. You have to move the windows around, adjust their size manually, etc. If you unplug your monitor, you're SoL if you need to retrieve some window that's now floating outside your viewport.
I just gave it a try right now, and Firefox became so huge I needed a good 15 seconds to resize it so that it would fit my screen.
---
[0] Windows in i3 are nodes in a tree, so you can detach one node and its children from the tiling tree. The new subtree is floating with respect to the root tree, but the nodes in the subtree are still tiled with respect to one another. This works well in "tabbed" mode, where only a window among its siblings is visible and takes up the full viewport; the others show up as tabs.