That shouldn't be the case. magit-status should open in the top-level
directory of the git repo unless the subdirectory you're in is itself a
top-level directory for another repo.
So, for example, set up a test repo like so:
mkdir -p /tmp/test-repo/subdir
cd /tmp/test-repo
git init
echo one > one.txt
echo two > subdir/two.txt
git add one.txt subdir/two.txt
git commit -m"first commit"
echo x >> one.txt
echo y >> subdir/two.txt
If you go to /tmp/test-repo/subdir/two.txt in Emacs and call
magit-status, you should be taken to a status buffer for /tmp/test-repo/
that shows the changes in both one.txt and subdir/two.txt. The
default-directory of the status buffer should be /tmp/test-repo/.
--
Kyle