One possibility is that "double negation" represents a different logic in the semantics. Another possibility is that "double negation" represents a different mapping from syntax to semantics. That is, two different language varieties might have the same logic in the semantics, but one variety has a syntax-semantics interface that maps "I didn't see no birds" to something like [latex]\neg\mbox{see}(\mbox{I},\mbox{birds})[/latex], and a different variety has a syntax-semantics interface that maps it to [latex]\mbox{see}(\mbox{I},\mbox{birds})[/latex]. Since we know that languages vary in their syntax-semantics mapping anyway, the second possibility might be more parsimonious.