We can break this language into the union of several simpler languages: $L = \left \{ a^{i} b^{j}|i >j\right \}\cup \left \{ a^{i} b^{j}|i <j\right \}\cup \left \{ a\cup b \right \}^*b\left \{ a\cup b \right \}^* a\left \{ a\cup b \right \}^*$
That is, all strings of $a$ ’s followed by $b$ ’s in which the number of $a$ ’s and $b$ ’s differ, unioned with all strings, not of the form $a^{_{}i}b^{j}$
First, we can achieve the union of the CFGs for the three languages:
$S\rightarrow S_{1} | S_{2}|S_{3}$
Now the set of strings $\left \{ a^{i} b^{j}|i >j\right \}$ is generated by a simple CFG:
$S_{1}\rightarrow aS_{1}b | aS_{1}| a$
Similarly for $\left \{ a^{i} b^{j}|i <j\right \}$ :
$S_{2}\rightarrow aS_{2}b | S_{2}b| b$.
Finally $\left \{ a\cup b \right \}^*b\left \{ a\cup b \right \}^* a\left \{ a\cup b \right \}^*$ is easily generated as follows:
$S_{3}\rightarrow XbXaX$
$X\rightarrow aX|bX|\epsilon$