I haven't found the explanation, but I have a workaround. tpope's scriptease plugin has a Breakadd here analogue, which works as expected. But before that you've got to :Runtime %. The reason is explained here.
Which makes me think that vim failing to set breakpoints properly has something to do with the script being supposed to be autoloaded.