To add on to what @jonathanbruno said, the reason that button_to still works is because it does not require UJS to intercept the request. When using button_to with the method option, it creates a form with the button and this hidden field:
To my understanding, this hidden field is what allows the server to interpret the request as a delete request. I’m not sure if this happens at the Rack or Rails level, but it’s required since HTML doesn’t natively support put or delete requests.
If you dive into the source of Rails-UJS you can find this file. This is the source that allows for the use of method on link_to. This code shows that all it does is insert a form with the same hidden field that is generated with the button, and then it automatically submits it.
Hope this explanation helps. I definitely have had a lot of confusion about this in the past too.
I always used data-method with data-remote and I thought that the former depends on the latter. However, it is not the case and checking the rails-ujs source code confirms it.