It's a compatibility difference, I'll grant you that, but I'm not sure I'd call it a bug, per se. It's been this way since Railo and, strictly speaking, a string shouldn't evaluate true with a number.
EDIT: The decimal point here causes the string version of the decimal number to be cast as a string, whereas the decimal number by itself is cast as a numeric. Though Micha or someone else involved in the Java can correct me if I'm wrong here, I'm pretty sure that's what happening in this case.
ACF goes out of their way to make numbers and strings equivalent, If you know you'll be comparing a string representation of a decimal number with an actual decimal number in Lucee, then I'd go with the second version of your tests:
val(x) eq y
since this works in both Lucee and ACF, if portability is a concern.