The empty or default output modifier will output the TV value if there is a value. It doesn't work the same way as the !empty which will output only what is explicitly passed. I don't know if this is the intended behaviour but see the following example:
Your
[[*page-illustration:]] has a value of /image.jpg
[[*page-illustration:!empty=`do this`:empty=`do that`]]
and you'd expect in this case it would return: "do this" but the way the empty output modifier works is that it will be hit second and because the value is false it returns the TV value.
It may work if you reverse the order but I doubt it. In this case you have two options: install the If snippet and use the following syntax:
[[If? &subject=`[[*page-illustration]]` &operator=`empty` &then=`do this` else=`do that`]]
Or you can use a slightly modified Output filter:
[[*page-illustration:is=``:then=`do this`:else=`do that`]]