Есть ли какая-либо разница (с точки зрения "программе нужно что-то делать") между пользователем, который не существует, и пользователем, которому не назначены проекты? Если нет, просто верните пустой список в любом случае.
Если есть разница, возможно, добавьте поле MessageCode / MessageText, которое заполняется, если пользователь не существует, вместе с пустым списком.
В любом случае, я не думаю, что 404 подходит - сайт существует, а 404 предполагает, что что-то не так с реальным веб-запросом.