I am having the same problem and am using NGUI 3.5.8 and Unity 4.3.4f1.
After debugging the NGUIText script a bit I noticed that the following method:
static void ReplaceSpaceWithNewline (ref StringBuilder s)
is only adding the end line character if the last character in the StringBuilder is an empty space character.
And that was not the case because when a new word was added to the builder it contained a space in front of it, not in the back. Thus at the end of the builder, when there was no more space on the respective line, the last character was a letter and not an empty space character.
So, as a quick fix I have shifted the start and end indexes when creating the substring used to put into the builder by 1 through the offset. And therefore had a space at the end always, which in turn could be replaced by a new line character when needed.
In short, I added 1 to the "offset" at line 861 and 868.
My post is not meant to be a final solution to the problem, just a suggestion to where to dig in a bit.