BVA and unit tests
It depends on when and how the developer implements the unit test. If the developer writes the test first (as recommended by test driven development, TDD), it's a black box test, because he doesn't see the implementation. In that case, the test conditions can only be based on the software specification.
If the developer writes a unit test after implementing the method, it depends:
- he can write the test looking at the implementation and taking the boundary values from the implementation. That's a white box test. However, the values used for testing might be different from the specification.
- he can write the test not looking at the implementation. In that case it's like writing the test before implementing the method and thus a black box test.
BVA and system tests
The same applies to system tests. You could look at the source code and then perform tests from the boundaries you recognize there. Then that's a white box test. The question is: is that useful? Typically not, since you test something that was not necessarily defined in the specification.
The more useful test is the black box test: look at the specification, not the code, determine the boundaries and then perform the test.
Boundary tests exist as white box and black box tests. However, from the usefulness I can understand that ISTQB has defined them as black box test.