You can use both ArgumentCaptor and matchers together in situations where you want to verify a method call using matchers but also need to capture and verify the argument value at a later stage.
Example:
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
when(mockService.doSomething(anyString())).thenReturn(null);
mockService.doSomething("John");
verify(mockService).doSomething(captor.capture());
assertEquals("John", captor.getValue());
This lets you stub the method using matchers for flexibility but still captures the argument passed and verifies it precisely later.