:h BufWinEnter is the event:
:autocmd! BufWinEnter * if &previewwindow | setlocal cursorline | endif
I guess the discrepancy is because WinEnter is triggered before 'previewwindow' is set. Possibly what's meant by this note in the help:
Note: For split and tabpage commands the
WinEnter event is triggered after the split
or tab ...
After seven hours of fiddling with the documentation and searching, I was able to write a function that takes a filetype, an array of strings and show a dummy buffer based on that.
function! showInPreview(name, fileType, lines)
let l:command = "silent! pedit! +setlocal\\ " .
\ "buftype=nofile\\ nobuflisted\\ " .