This is quite an edge case, but someone may run into it again.
Inside the FAST pipeline, there are two string types. Plain old strings and TextChunks. TextChunks are used to be able to efficiently handle large strings that may need to be modified. In my case today I had a copy of the body which was TextChunks. What I saw in the search results was that only the beginning of each document was showing up. Looking with a spy stage the crawled property looked fine but after the PropertiesMapper my managed property only had the first chunk.
The way to deal with this is simple. Set MergeCrawledProperties to true on the managed property.