In reStructuredText, it would be impossible to unambigously mark up
and parse lists without blank lines before and after. Deeply nested
lists may look ugly with so many blank lines, but it's a price we pay
for unambiguous markup. Some other plaintext markup systems do not
require blank lines in nested lists, but they have to compromise
somehow, either accepting ambiguity or requiring extra complexity.
For example, Epytext does
not require blank lines around lists, but it does require that lists
be indented and that ambiguous cases be escaped.