Previously destination querystrings were paths.
As part of the greater trend of moving away from paths, they must now be relative URLs.
That means they include the base path, any language prefix, non-clean URL handling, etc.
This simplifies many parts of core, because they can use standard \Drupal\Core\Url objects and the various methods in core like Entity::url()
If you want to have the destination return the user to the current page, you can use the special <current> route instead of having to know the path where the link will be rendered.
Before - hard-coding a destination to the path where a link is shown:
$options['query']['destination'] = 'admin/structure/block/block-content';
After example #1:
From procedural code
$options['query']['destination'] = \Drupal::url('<current>');
After example #2:
from inside a class using the UrlGeneratorTrait
$options['query']['destination'] = $this->url('<current>');
For a typical entity, you can use the entity url() method to get a destination to that entity, or it's overview page for example:
Before:
$node = Node::load($nid);
$options['query']['destination'] = 'node/' . $node->id();
After:
$node = Node::load($nid);
$options['query']['destination'] = $node->url();
For a config entity like a View, you may need to specify a specific link template by name.
Before:
'query' => array('destination' => "admin/structure/views/view/{$view->id()}"),
After:
'query' => array('destination' => $view->url('edit-form')),
If you want to return to the default overview page for an entity after editing it, you can use the 'collection' link template:
Before:
$operations['edit']['query']['destination'] = 'admin/structure/block/block-content';
After:
$operations['edit']['query']['destination'] = $entity->url('collection');