Basically, they are not too different. The difference is in managing your objects: find_element() gives more flexibility, as you can create a 
locator = By.XPATH, my_xpath 
somewhere and use it as find_element(*locator) in, for example, your tests. You can simply update locator 
locator = By.CSS, my_css 
and there will be no need in updating your test code as find_element(*locator) is still valid.