Aunque pese informarlo, tuve que abrir Visual Basic para ver como lo había hecho ya hace unos años, pero obviamente en Visual Basic es mucho mas natural utilizar DAO, ahí va el código, lo probé y funciona, hay que tener en cuenta que el password es Case Sesitive.
Código:
uses
ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
DBEngine : OLEVariant;//IDispatch;
begin
DbEngine := CreateOleObject('Dao.DbEngine.36');
DbEngine.CompactDataBase('C:\db1.mdb', 'C:\db2.mdb', NULL, 0, ';pwd=password');
end;