Derby uses a header to store length information for LOBs. If this header can't be filled in when the LOB is inserted, which will be the case if the LOB is inserted without specifying the length up front and the LOB is larger than a single page (typically 32 KB, but may be smaller too), Derby has no mechanism to update the header without rewriting the whole LOB at a later time.
The insert performance will be unaffected (). You'll see impaired performance if you start asking for the length of these LOBs, as Derby has to fetch and decode the whole value to find the length.
If you're just reading data, say, with a stream, performance is unaffected.
Assuming you inserted 101 LOBs without specifying their lengths, 100 of them being 2 GB big and one only 10 bytes, you'd be in a world of hurt with the following query:
select min(length(myLOBs)) from mytable
I think this can be fixed, but it will require some non-trivial work in the store.
 For recent versions, there were some edge-case issues with older versions using the client driver.