Union-find seems like an appropriate algorithm here.
Just loop through the grid and union each non-wall cell with its non-wall neighbours.
Then loop through the sets to find the biggest one (this is the biggest room).
Then loop through the grid again and, for each wall, check the size of union-ing the different sides of the wall together (just record the size, don't actually perform the union). The biggest recorded union would indicate the wall to break down to create the biggest room.
The running time of using known optimizations to union-find would be, for all remotely practical sizes of the grid, O(rowCount*columnCount)
(linear).