認識が間違っているかもしれませんが
dllだと1アプリでスキャナ2台使うケースまで考えると、
1アプリに対してのdllインスタンスは1つなので
dll呼び出し時にハンドルを使用者側で管理してもらう必要があります。
(本家本元のTWAINライブラリの都合上hwndが必要です
 →DLLでCreateWindow発行
 →使用者にハンドルを渡す)
OCXなら「使う分貼りつけて」になり、使用者側も分かりがいいかと。

総合的には今の所、ActiveXControlの方が利便性があると思っています。
TTimer系をActiveXにするポイントをご存知の方、よろしくお願いします。
実際のものもTComponentから派生する予定なのですが、TComponentだから
ActiveXに出来ないのでしょうか(その辺がわかっていません)