You're very close. The problem is when you call getElement, you're actually retrieving the <div> two ancestors up from the actual <textarea> element which is why it's not working.
You need to get a handle to the actual "input" element and there are two ways to do this:
// sub class the object
public class MyTextArea extends TextArea
XElement elt = this.getInputEl();
Both work and both are fine to use. If this is a one-off, I'd go with the latter. If you have the need to do this in more than one place, create a reusable widget and call it, say, NonWrappingTextArea.
// modify the text area's cell
TextArea ta = new TextArea();
TextAreaInputCell cell = (TextAreaInputCell) ta.getCell();