Why to overrule role vars?
Variables have different priorities, see vars precedence.

As of Ansible 2.x:


  role defaults
  inventory file or script group vars
  inventory group_vars/all
  playbook group_vars/all
  inventory group_vars/*
  playbook group_vars/*
  inventory file or script host vars
  inventory host_vars/*
  playbook host_vars/*
  host facts
  play vars
  play vars_prompt
  play vars_files
  role vars (defined in role/vars/main.yml)
  block vars (only for tasks in block)
  task vars (only for the task)
  role (and include_role) params
  include params
  include_vars
  set_facts / registered vars
  extra vars (always win precedence)  


For roles you would generally use myrole/defaults/main.yml for easily overridable vars (e.g. installation path or smth) and use myrole/vars/main.yml for vars that you don't want to be easily overridden (smth like required packages).