Of course, it depends on many things.
For example, if a sink implements exactly-once delivery it typically needs to finalize a batch of data during a checkpoint. So Flink may need to wait for the data store to confirm something.
Or maybe it takes a while for the object storage that you use for storing checkpoints to acknowledge the write.
Or you may have a data skew and it takes a while for the busiest tasks to report their progress.