Context free grammer for non-palindrome
I need a CFG which will generate strings other than palindromes. The solution has been provided and is as below.(Introduction to theory of computation - Sipser)

    R -> XRX | S
    S -> aTb | bTa
    T -> XTX | X | <epsilon>
    X -> a | b

I get the general idea of how this grammar works. It mandates the insertion of a sub-string which has corresponding non-equal alphabets on its either half, through the production S -> aTb | bTa.

I don't completely understand the semantics of the below particular production.

    1.   T -> XTX | X | <epsilon>
         X -> a | b

The way I see it, T can generate any combination of a and b, i.e. {a, b}*. Why could it not have been like 

    T -> XT | <epsilon>
    X -> a | b | <epsilon>

Aren't the two equivalent? As the later is more intuitive, why isn't it used?
Context free grammer for non-palindrome
===

I need a CFG which will generate strings other than palindromes. The solution has been provided and is as below.(Introduction to theory of computation - Sipser)

    R -> XRX | S
    S -> aTb | bTa
    T -> XTX | X | <epsilon>
    X -> a | b

I get the general idea of how this grammar works. It mandates the insertion of a sub-string which has corresponding non-equal alphabets on its either half, through the production S -> aTb | bTa.

I don't completely understand the semantics of the below particular production.

    1.   T -> XTX | X | <epsilon>
         X -> a | b

The way I see it, T can generate any combination of a and b, i.e. {a, b}*. Why could it not have been like 

    T -> XT | <epsilon>
    X -> a | b | <epsilon>

Aren't the two equivalent? As the later is more intuitive, why isn't it used?