Deoplete expects to carry out the filtering of snippets by default, but the UltiSnips source uses UltiSnips#SnippetsInCurrentScope() which filters the returned snippets based on user input. Without is_volatile, Deoplete will cache the first set of results UltiSnips returns and keep trying to filter that, rather than getting a new set of results when the input changes.
I encountered an issue with Deoplete where Ultisnips suggestiosn wouldn't appear if there was a match in the current buffer with the same name as a Ultisnip snippet. This change allows the snippet and buffer match to appear side-by-side, which is less confusing.
More information can be found on the issue on the Deoplete repo here:
https://github.com/Shougo/deoplete.nvim/issues/138#issuecomment-174050309