"So all things being equal" They're not. These titles are not equivalent.
I would rank them like this, highest to lowest:
- Principal Engineer
- Senior Staff Engineer
- Staff Engineer
- Senior Engineer / Senior Research Engineer
In general, "senior" implies depth of experience and maturity to work independently with less direct guidance in day to day activities. An engineer can expect to receive assignments or tasks and external prioritization. A Senior Engineer should expect to identify and prioritize such tasks for themselves.
A Senior Engineer is typically someone with deep knowledge of a technology or product line and experience with multiple release cycles.
A Senior Research Engineer sounds like someone who is not as involved in production cycles but is more focused on algorithms or long term strategic work.
"Member of the Technical Staff" does not imply any seniority or programming experience. A receptionist can be a Member of the Technical Staff.
A Staff Engineer typically has deep experience with and contributes to multiple technologies and product lines across a company.
A Senior Staff Engineer does all the staff engineer stuff, plus works more in a leadership role across multiple product lines or technologies. Senior staff should also be thinking ahead for strategic planning and execution.
A Principal Engineer is often the top of the technical ladder in many companies, or just short of "Technical Fellow" or "Chief Scientist". Principals are also called architects in various fashions. Principal Engineers are responsible for macro scale architecture of a software technology or product line, and providing guidance and oversight to multiple development teams working on different products or technologies to ensure that the technologies interoperate or connect to each other appropriately.
These are my opinions not as an HR manager but as an engineer who as worked in (and helped define) all of these roles.