Ext4 wasn't designed for flash media. It can work, and it's a safe value due to the extremely wide usage it gets, but it isn't necessarily the best choice, especially on flash media that doesn't do wear leveling.
UBIFS is specifically designed for raw NAND flash. It doesn't work on arbitrary block devices, it requires an underlying MTD storage device (as opposed to devices that do their own block mapping such as MMC and SD). It generally has good performance, and is possibly the best choice on raw NAND flash, but it can be annoying to debug and test because you can't just mount a disk image.
LogFS may be another contender. It has good performance for most operations, but it has a history stability problems, and I think it's unmaintained. In a presentation by Toshiba in 2009, it got slammed for corruption bugs, and I'm not sure if they've been fully resolved since then.
YAFFS and JFFS2 are older filesystems that have largely been supplanted these days. I think JFFS2 is still considered fine for small filesystems (e.g. configuration data) but not for “large” filesystems — avoid it if you have more than a few MB of logs.
F2FS is a relative newcomer. It's designed for larger flash filesystems (there's a minimum size of 10MB!). I'm not sure if it can be considered mature yet.
(Note: I don't have any actual industrial experience of any of these filesystems.)