The reason the ship leaves from Mexico is (if I recall correctly) the Stevens Law. A ship leaving the U.S must visit a foreign port before it returns to a U.S. port. Since your ship will be leaving a foreign port it can go directly to a U.S. port (Hawaii). If the ship leaves Hawaii it could not come directly back to San Diego, so it docks at Ensenada.
Thats also the reason most Alaska cruises depart from Vancouver, B.C.
Does that make sense?? I have never heard why that law was put into effect. I am sure it is hundreds of years old and probably involves smuggling. I wonder if it is still necessary? I would think our ports might have slightly better security than foreign ports.