Counterexample that B-A can be NOT context free
Consider the languages


B = { a*b*c* } -- an obviously regular language.
A1 = { aibjc* | i > j }
A2 = { aibjc* | i &lt; j }
A3 = { a*bicj | i > j }
A4 = { a*bicj | i &lt; j }
A = A1 &cup; A2 &cup; A3 &cup; A4


The An langauges are all context-free, so their union is also context free, but the language B-A is the non-context free language { aibici }