Depends on how many images you want to see stored and if you want to back the data up. In case you store them in Activiti, you only need to create backups for the DB, no additional FS copies need to be created. However, if you have a large amount of files (and large files), it's not ideal to store all these in the DB, as it will grow and grow, making the ACT_GE_BYTEARRAY_ table huge.
What do you mean by lazily loading the image in the application? I presume you're wondering if you can request the process-variables map WITHOUT having the full image byte-array initialized in it? That's currently not possible, getting a binary variable get's the full image/byte-array.
A workaround could be to use the Attachment (see taskService), which allows you to add binary attachments to tasks/processes and fetch the actual binary content independently from the Attachment entity.