An alternative would be a zone brick that "erases" the water it's overlapping. I don't know how that would even work though.
If this is possible, then doing it automatically is possible.
An automatic water zoning script.
Call it something catchy...
How about AutoZone?
In all seriousness, it would be possible, but the only way I can think of doing it would be pretty intensive, at least while you're building/editing water levels. Whenever a brick is placed, it would have to send impulses out in all directions at all plate heights it occupies. If it encountered nothing, that location would start as a single plate of volume attempting to find bounds. At any time, if an impulse fired from it could travel further than say 64 blocks unperturbed, the air pocket would fail, the process would stop, the bubble would burst. However, if resistance continues to be found, the plate of volume before each collision could be added to the bubble. This process will automatically balloon it out to fill the entire area. The possible hangup with this is, as far as I see it, not having much experience with this kind of thing myself, is that it would be intensive to deal with that many raycasts(?impulses?whatever.)
Anyhoo, each time a block is hit by a bubble impulse, it would be added to a set of bounding blocks for the bubble. If any of a bubbles' bounding blocks are changed in a way that could effect water (such as a brick being destroyed or a door opening) the impulse/expansion process would have to repeat.
The bubble's interior actually does need to be stored along with its bounds and it should probably be defined as eloquently as possible. I believe somebody once made a script to prevent spam by combining adjacent blocks whenever possible. An interpretation of this would be necessary to divide the bubble into the smallest number of rectangular solids possible. The locations and dimensions of these would be used to set up zones that negate the effect of water. In the event of the burst of a bubble, these would have to be destroyed.