So you're basically replacing the visual variable of position to denote a negative value with the visual variable of colour - this has been termed a 'mirrored' chart. The positives as you're seeing is that it saves space, the negatives are people may not understand it and it may cause some issues for the colour-blind (though red-blue problems are not as common as red-green, using colour hue as the sole visual differentiator is usually frowned at).
You could have a look at the techniques used in horizon graphs, either offset or mirrored types - http://flowingdata.com/2015/07/02/changing-price-of-food-items-and-horizon-graphs/
Offsetting is where the negative values start from the top of the scale and point downwards - I think of it as stalactites (negative) and stalagmites (positive) - thus the negative values are differentiated by their common alignment starting from the top of the scale. This link to a horizon graph drawing library by Mike Bostock shows the differences nicely, you can ignore the layering effect if that doesn't fit in with what you'd like --> https://github.com/square/cubism/wiki/Horizon#mode
There was also a study done a few years ago that showed mirroring using colour to mark negative values worked as well as offsetting, and that layering (i.e. applying the horizon graph technique) worked when faced with a small chart height. Caveats are the charts compared were time-varying area/line charts rather than bar charts so the layering effect wasn't given to drastic changes between neighbouring values, and that participants were allowed to train on the techniques first.
"We found no significant difference in either estimation time
or accuracy between chart types and reject our hypothesis
that offset graphs would provide better performance than
mirror graphs. Rather, the results suggest that mirrored and
offset graphs are comparable for value comparison tasks. "
Jeffrey Heer, Nicholas Kong, and Maneesh Agrawala. 2009. Sizing the horizon: the effects of chart size and layering on the graphical perception of time series visualizations. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI '09). ACM, New York, NY, USA, 1303-1312. DOI=http://dx.doi.org/10.1145/1518701.1518897
Another option is just to add a large "+" or "-" inside the bars themselves, though for small values either way you're not going to have room. This could work in combination with the techniques above, it's not re-using or clashing with the visual indicators they use.