This is a follow-up question to Why is it hard to parse unambiguous context-free grammar in linear time?
I know that Parsing Expression Grammars (PEG) can be parsed in linear time using a packrat parser. Those parser use memoization to accomplish the linear time complexity: basically each non-terminal can be "expanded" at most once at each input position (the result of said expansion being memoized). Since the number of non-terminals is a constant factor in the size of the input, this accounts for the linear time complexity.
Supposedly (according to wikipedia at least), packrat parsers are able to parse many unambiguous context-free grammars.
My question is then: why can't we apply the same memoization principle to parse unambiguous context-free grammars in linear time ? I.e. what are the differentiating factors between PEG and unambiguous CFG that make minimization possible for all PEGs but not for all the CFGs ?
As secondary question: is there a way to easily translate a subset of unambiguous CFG to PEG ?
Also, in this answer, the language of palindromes over alphabet {a, b} is given as example of language for which there is no unambiguous CFG that can be parsed in linear time. Is there a PEG that recognizes this language ? The naive translation won't work due to ordered choice (if one of the alternatives matches, the other alternatives are not attempted, even tough using them might allow for a successful parse of the input). This mailing list entry says it is possible with syntactic predicates, but I don't see how.