It can certainly happen that LRU is not optimal, and FIFO might even work out better.
Consider, for example, an application which repeatedly sequentially scans a large array (too large to fit in memory) always starting at the beginning, usually getting far enough to force page replacement, but often not getting to the end.
An optimal strategy would, I think, keep early pages in the array, which will be used on every scan, in preference to recently accessed pages, which might not be needed again for some time. This strategy would be more similar to FIFO than LRU.