In many jurisdictions, the term "engineer" refers to a licensed professional. So a software engineer would be someone with the requisite education and professional experience to obtain that license and be endorsed by their local regulatory body. It would also mean additional professional and ethical obligations. In Canada, for example, you can't have the term "Engineer" in your job title without being a licensed professional engineer. However, this rule is poorly enforced and mostly ignored.
Now mind you, most software engineers are NOT engineers in that sense, but I still think of it that way. Most software engineers are really software developers, but the engineer title is more appealing for whatever reasons (status?). Programmer/Coder is just slang for Developer, IMHO.